Enabled x86_64 build for Android.
authorTim Kourt <tim.a.kourt@intel.com>
Thu, 13 Aug 2015 19:35:30 +0000 (12:35 -0700)
committerJon A. Cruz <jonc@osg.samsung.com>
Mon, 17 Aug 2015 23:23:50 +0000 (23:23 +0000)
Change-Id: Iaf4384cc4a1c3ec35ec00b3b0b88b19f5c73609c
Signed-off-by: Tim Kourt <tim.a.kourt@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/2201
Reviewed-by: Erich Keane <erich.keane@intel.com>
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Jon A. Cruz <jonc@osg.samsung.com>
android/BuildInstructionsForAndroidAPI.txt
auto_build.sh
build_common/android/compatibility/c_compat.c
resource/third_party_libs.scons
service/soft-sensor-manager/SDK/java/org/iotivity/service/ssm/DataReader.java
service/soft-sensor-manager/SDK/java/org/iotivity/service/ssm/ModelData.java
service/soft-sensor-manager/SDK/java/org/iotivity/service/ssm/QueryEngine.java
service/soft-sensor-manager/SSMCore/src/SSMInterface/SSMCore_JNI.cpp
service/soft-sensor-manager/SSMCore/src/SSMInterface/SSMCore_JNI.h
service/third_party_libs.scons

index 1b0f239..a30df42 100644 (file)
@@ -10,11 +10,10 @@ Build Instructions for Android-API:
         def ndkBuild = new File(System.env.ANDROID_NDK_HOME, 'ndk-build.cmd')
 
 4.Build scons for android and your targeted architecture (This will also build Android API):
-    a.scons TARGET_OS=android TARGET_ARCH=<target arch> TARGET_TRANSPORT=IP RELEASE=1
-               where <target arch> can be armeabi, armeabi-v7a, x86.
+    a.scons TARGET_OS=android TARGET_ARCH=<target arch> TARGET_TRANSPORT=<target transport> RELEASE=1
+               where <target arch> can be armeabi, armeabi-v7a, x86, x86_64.
                Note: To build in debug mode, use RELEASE=0.
                Note: The minimum SDK version supported is 21.
-               Note: Only TARGET_TRANSPORT currently supported is IP
     b.If the project is setup correctly, you should see a BUILD SUCCESSFUL message on the terminal
     c.You should see the .aar files generated inside of '<iotivity>/android/android_api/base/build/outputs/aar' directory. The .aar files contain jni directory and also a .jar file
 
index 806bf6a..750f641 100755 (executable)
@@ -72,6 +72,11 @@ function build_android()
        scons TARGET_OS=android TARGET_ARCH=x86 RELEASE=$1 TARGET_TRANSPORT=BT $2
        scons TARGET_OS=android TARGET_ARCH=x86 RELEASE=$1 TARGET_TRANSPORT=BLE $2
 
+       echo "*********** Build for android x86_64 *************"
+       scons TARGET_OS=android TARGET_ARCH=x86_64 RELEASE=$1 TARGET_TRANSPORT=IP $2
+       scons TARGET_OS=android TARGET_ARCH=x86_64 RELEASE=$1 TARGET_TRANSPORT=BT $2
+       scons TARGET_OS=android TARGET_ARCH=x86_64 RELEASE=$1 TARGET_TRANSPORT=BLE $2
+
        echo "*********** Build for android armeabi *************"
        scons TARGET_OS=android TARGET_ARCH=armeabi RELEASE=$1 TARGET_TRANSPORT=IP $2
        scons TARGET_OS=android TARGET_ARCH=armeabi RELEASE=$1 TARGET_TRANSPORT=BT $2
index 000428a..b76c739 100644 (file)
@@ -45,16 +45,3 @@ void srandom(unsigned int __s)
 {
     srand48(__s);
 }
-
-/* from unistd.h */
-int getpagesize(void)
-{
-  extern unsigned int __page_size;
-  return __page_size;
-}
-
-int __getpageshift(void)
-{
-  extern unsigned int __page_shift;
-  return __page_shift;
-}
index 46b80bd..bac4cfb 100644 (file)
@@ -57,11 +57,11 @@ if target_os == 'android':
        if target_arch == 'armeabi-v7a-hard':
                target_arch = 'armeabi-v7a'
 
-       if target_arch not in ['x86', 'armeabi', 'armeabi-v7a']:
+       if target_arch not in ['x86', 'x86_64','armeabi', 'armeabi-v7a']:
                if not env.GetOption('help') and not env.GetOption('clean'):
                        print '''
 *********************************** Warning ***********************************
-* current only x86, armeabi, armeabi-v7a libraries are provided!              *
+* current only x86, x86_64, armeabi, armeabi-v7a libraries are provided!              *
 *******************************************************************************
 '''
        else:
index 2679850..2171753 100644 (file)
@@ -37,9 +37,9 @@ import java.util.List;
 public class DataReader
 {
 
-        private int pDataReaderInstance;
+        private long pDataReaderInstance;
 
-        public DataReader(int dataReaderInstance)
+        private DataReader(long dataReaderInstance)
         {
             pDataReaderInstance = dataReaderInstance;
         }
index c276f83..fc408da 100644 (file)
@@ -36,9 +36,9 @@ package org.iotivity.service.ssm;
 public class ModelData
 {
 
-        private int pIModelDataInstance;
+        private long pIModelDataInstance;
 
-        public ModelData(int iModelDataInstance)
+        private ModelData(long iModelDataInstance)
         {
             pIModelDataInstance = iModelDataInstance;
         }
@@ -97,4 +97,4 @@ public class ModelData
             return CoreController.getInstance().getPropertyValue(
                        pIModelDataInstance, propertyIndex);
         }
-}
\ No newline at end of file
+}
index 348e51d..8acc1a9 100644 (file)
@@ -36,9 +36,9 @@ package org.iotivity.service.ssm;
 */
 public class QueryEngine
 {
-        private int pQueryEngineInstance;
+        private long pQueryEngineInstance;
 
-        public QueryEngine(int queryEngineInstance)
+        private QueryEngine(long queryEngineInstance)
         {
             pQueryEngineInstance = queryEngineInstance;
         }
@@ -50,7 +50,7 @@ public class QueryEngine
          * @return int - Instance of the query engine object, set on object's creation
          * 
          */
-        public int getQueryEngineInstance()
+        public long getQueryEngineInstance()
         {
             return pQueryEngineInstance;
         }
@@ -100,4 +100,4 @@ public class QueryEngine
             CoreController.getInstance().killContextQuery(pQueryEngineInstance,
             cqid);
         }
-}
\ No newline at end of file
+}
index f088ed2..05ec0d6 100644 (file)
@@ -109,14 +109,18 @@ class QueryEngineEventReceiver
                 env->GetMethodID(g_ClassQueryEngineEvent, "onQueryEngineEvent",
                                  "(ILorg/iotivity/service/ssm/DataReader;)V");
 
-            jmethodID cid_DataReader = env->GetMethodID(g_ClassDataReader, "<init>", "(I)V");
+            jmethodID cid_DataReader = env->GetMethodID(g_ClassDataReader, "<init>", "(J)V");
 
             if (cid_DataReader == NULL)
                 return SSM_E_FAIL;
 
-            env->CallVoidMethod(m_objQueryEngineEvent, midQueryEngineEvent,
+            env->CallVoidMethod(m_objQueryEngineEvent,
+                                midQueryEngineEvent,
                                 (jint)cqid,
-                                env->NewObject(g_ClassDataReader, cid_DataReader, (jint)pResult));
+                                env->NewObject(
+                                    g_ClassDataReader,
+                                    cid_DataReader,
+                                    reinterpret_cast<jlong>(pResult)));
 
             DETACH_CURRENT_THREAD(g_JVM);
 
@@ -240,12 +244,12 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_service_ssm_CoreController_createQue
         return NULL;
     }
 
-    jmethodID cid_QueryEngine = env->GetMethodID(g_ClassQueryEngine, "<init>", "(I)V");
+    jmethodID cid_QueryEngine = env->GetMethodID(g_ClassQueryEngine, "<init>", "(J)V");
 
     if (cid_QueryEngine == NULL)
         return NULL;
 
-    return env->NewObject(g_ClassQueryEngine, cid_QueryEngine, (jint)pQueryEngine);
+    return env->NewObject(g_ClassQueryEngine, cid_QueryEngine, reinterpret_cast<jlong>(pQueryEngine));
 }
 
 JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_releaseQueryEngine
@@ -265,7 +269,7 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_releaseQuery
 }
 
 JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_executeContextQuery
-(JNIEnv *env, jclass clz, jint pQueryEngineInstance, jstring jstrContextQuery)
+(JNIEnv *env, jclass clz, jlong pQueryEngineInstance, jstring jstrContextQuery)
 {
     int                 cqid = -1;
     if (jstrContextQuery == NULL)
@@ -289,7 +293,7 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_executeConte
 }
 
 JNIEXPORT void JNICALL Java_org_iotivity_service_ssm_CoreController_registerQueryEvent
-(JNIEnv *env, jclass clz, jint pQueryEngineInstance, jobject queryEngineEvent)
+(JNIEnv *env, jclass clz, jlong pQueryEngineInstance, jobject queryEngineEvent)
 {
     IQueryEngine        *pQueryEngine = (IQueryEngine *)pQueryEngineInstance;
 
@@ -304,7 +308,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_service_ssm_CoreController_registerQuer
 }
 
 JNIEXPORT void JNICALL Java_org_iotivity_service_ssm_CoreController_killContextQuery
-(JNIEnv *env, jclass clz, jint pQueryEngineInstance, jint cqid)
+(JNIEnv *env, jclass clz, jlong pQueryEngineInstance, jint cqid)
 {
     IQueryEngine        *pQueryEngine = (IQueryEngine *)pQueryEngineInstance;
 
@@ -315,7 +319,7 @@ JNIEXPORT void JNICALL Java_org_iotivity_service_ssm_CoreController_killContextQ
 }
 
 JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_getDataId
-(JNIEnv *env, jclass clz, jint pDataReaderInstance)
+(JNIEnv *env, jclass clz, jlong pDataReaderInstance)
 {
     IModelData *pDataReader = (IModelData *)pDataReaderInstance;
 
@@ -323,7 +327,7 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_getDataId
 }
 
 JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_getPropertyCount
-(JNIEnv *env, jclass clz, jint pIModelDataInstance )
+(JNIEnv *env, jclass clz, jlong pIModelDataInstance )
 {
     IModelData *pModelData = (IModelData *)pIModelDataInstance;
 
@@ -331,7 +335,7 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_getPropertyC
 }
 
 JNIEXPORT jstring JNICALL Java_org_iotivity_service_ssm_CoreController_getPropertyName
-(JNIEnv *env, jclass clz, jint pIModelDataInstance, jint propertyIndex )
+(JNIEnv *env, jclass clz, jlong pIModelDataInstance, jint propertyIndex )
 {
     IModelData *pModelData = (IModelData *)pIModelDataInstance;
 
@@ -339,7 +343,7 @@ JNIEXPORT jstring JNICALL Java_org_iotivity_service_ssm_CoreController_getProper
 }
 
 JNIEXPORT jstring JNICALL Java_org_iotivity_service_ssm_CoreController_getPropertyValue
-(JNIEnv *env, jclass clz, jint pIModelDataInstance, jint propertyIndex )
+(JNIEnv *env, jclass clz, jlong pIModelDataInstance, jint propertyIndex )
 {
     IModelData *pModelData = (IModelData *)pIModelDataInstance;
 
@@ -347,7 +351,7 @@ JNIEXPORT jstring JNICALL Java_org_iotivity_service_ssm_CoreController_getProper
 }
 
 JNIEXPORT jobject JNICALL Java_org_iotivity_service_ssm_CoreController_getAffectedModels
-(JNIEnv *env, jclass clz, jint pDataReaderInstance)
+(JNIEnv *env, jclass clz, jlong pDataReaderInstance)
 {
     IDataReader *pDataReader = (IDataReader *)pDataReaderInstance;
     std::vector<std::string>    affectedModels;
@@ -372,7 +376,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_service_ssm_CoreController_getAffect
 }
 
 JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_getModelDataCount
-(JNIEnv *env, jclass clz, jint pDataReaderInstance, jstring jstrModelName)
+(JNIEnv *env, jclass clz, jlong pDataReaderInstance, jstring jstrModelName)
 {
     IDataReader *pDataReader = (IDataReader *)pDataReaderInstance;
     int modelCount = 0;
@@ -389,7 +393,7 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_getModelData
 }
 //return IModelData
 JNIEXPORT jobject JNICALL Java_org_iotivity_service_ssm_CoreController_getModelData
-(JNIEnv *env, jclass clz, jint pDataReaderInstance, jstring jstrModelName, jint jintDataIndex )
+(JNIEnv *env, jclass clz, jlong pDataReaderInstance, jstring jstrModelName, jint jintDataIndex )
 {
     IDataReader *pDataReader = (IDataReader *)pDataReaderInstance;
     IModelData *pModelData = NULL;
@@ -401,12 +405,12 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_service_ssm_CoreController_getModelD
         return NULL;
     }
 
-    jmethodID cid_ModelData = env->GetMethodID(g_ClassModelData, "<init>", "(I)V");
+    jmethodID cid_ModelData = env->GetMethodID(g_ClassModelData, "<init>", "(J)V");
 
     if (cid_ModelData == NULL)
         return NULL;
 
-    return env->NewObject(g_ClassModelData, cid_ModelData, (jint)pModelData);
+    return env->NewObject(g_ClassModelData, cid_ModelData, reinterpret_cast<jlong>(pModelData));
 }
 
 JNIEXPORT void JNICALL Java_org_iotivity_service_ssm_CoreController_registerReportReceiver
index d950bce..1d4a707 100644 (file)
@@ -45,34 +45,34 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_releaseQuery
 (JNIEnv *env, jclass clz, jobject queryEngine);
 
 JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_executeContextQuery
-(JNIEnv *env, jclass clz, jint pQueryEngineInstance, jstring jstrContextQuery);
+(JNIEnv *env, jclass clz, jlong pQueryEngineInstance, jstring jstrContextQuery);
 
 JNIEXPORT void JNICALL Java_org_iotivity_service_ssm_CoreController_registerQueryEvent
-(JNIEnv *env, jclass clz, jint pQueryEngineInstance, jobject queryEngineEvent);
+(JNIEnv *env, jclass clz, jlong pQueryEngineInstance, jobject queryEngineEvent);
 
 JNIEXPORT void JNICALL Java_org_iotivity_service_ssm_CoreController_killContextQuery
-(JNIEnv *env, jclass clz, jint pQueryEngineInstance, jint cqid);
+(JNIEnv *env, jclass clz, jlong pQueryEngineInstance, jint cqid);
 
 JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_getDataId
-(JNIEnv *env, jclass clz, jint pDataReaderInstance);
+(JNIEnv *env, jclass clz, jlong pDataReaderInstance);
 
 JNIEXPORT jobject JNICALL Java_org_iotivity_service_ssm_CoreController_getAffectedModels
-(JNIEnv *env, jclass clz, jint pDataReaderInstance);
+(JNIEnv *env, jclass clz, jlong pDataReaderInstance);
 
 JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_getModelDataCount
-(JNIEnv *env, jclass clz, jint pDataReaderInstance, jstring jstrModelName);
+(JNIEnv *env, jclass clz, jlong pDataReaderInstance, jstring jstrModelName);
 
 JNIEXPORT jobject JNICALL Java_org_iotivity_service_ssm_CoreController_getModelData
-(JNIEnv *env, jclass clz, jint pDataReaderInstance, jstring jstrModelName, jint jintDataIndex );
+(JNIEnv *env, jclass clz, jlong pDataReaderInstance, jstring jstrModelName, jint jintDataIndex );
 
 JNIEXPORT jint JNICALL Java_org_iotivity_service_ssm_CoreController_getPropertyCount
-(JNIEnv *env, jclass clz, jint pIModelDataInstance );
+(JNIEnv *env, jclass clz, jlong pIModelDataInstance );
 
 JNIEXPORT jstring JNICALL Java_org_iotivity_service_ssm_CoreController_getPropertyName
-(JNIEnv *env, jclass clz, jint pIModelDataInstance, jint propertyIndex );
+(JNIEnv *env, jclass clz, jlong pIModelDataInstance, jint propertyIndex );
 
 JNIEXPORT jstring JNICALL Java_org_iotivity_service_ssm_CoreController_getPropertyValue
-(JNIEnv *env, jclass clz, jint pIModelDataInstance, jint propertyIndex );
+(JNIEnv *env, jclass clz, jlong pIModelDataInstance, jint propertyIndex );
 
 JNIEXPORT void JNICALL Java_org_iotivity_service_ssm_CoreController_registerReportReceiver
 (JNIEnv *env, jclass clz, jobject reportReceiver );
@@ -81,4 +81,4 @@ JNIEXPORT void JNICALL Java_org_iotivity_service_ssm_CoreController_registerRepo
 }
 #endif
 
-#endif
\ No newline at end of file
+#endif
index 6ddeebc..6fda850 100644 (file)
@@ -78,11 +78,11 @@ if target_os == 'android':
        if target_arch == 'armeabi-v7a-hard':
                target_arch = 'armeabi-v7a'
 
-       if target_arch not in ['x86', 'armeabi', 'armeabi-v7a']:
+       if target_arch not in ['x86', 'x86_64','armeabi', 'armeabi-v7a']:
                if not env.GetOption('help') and not env.GetOption('clean'):
                        print '''
 *********************************** Warning ***********************************
-* current only x86, armeabi, armeabi-v7a libraries are provided!              *
+* current only x86, x86_64, armeabi, armeabi-v7a libraries are provided!              *
 *******************************************************************************
 '''
        else: