From 61549734dcbbeed29d588a00d7a3e0d26548f353 Mon Sep 17 00:00:00 2001 From: jnashok Date: Mon, 13 Apr 2015 22:54:36 +0900 Subject: [PATCH] Connectivity patch to fix SCons build issues this patch also removes hard coded sdk version Change-Id: Iabb1cb0e261c8513d0f08469dee9842d5084d681 Signed-off-by: jnashok Reviewed-on: https://gerrit.iotivity.org/gerrit/703 Tested-by: jenkins-iotivity Reviewed-by: Erich Keane --- build_common/android/SConscript | 22 ++- resource/csdk/connectivity/SConstruct | 1 - resource/csdk/connectivity/build/SConscript | 2 +- .../csdk/connectivity/build/android/SConscript | 47 ++++-- .../csdk/connectivity/build/android/jni/Android.mk | 160 ++------------------- resource/csdk/connectivity/common/SConscript | 9 +- 6 files changed, 64 insertions(+), 177 deletions(-) diff --git a/build_common/android/SConscript b/build_common/android/SConscript index 33997cd..eb43bac 100644 --- a/build_common/android/SConscript +++ b/build_common/android/SConscript @@ -25,17 +25,18 @@ if not android_ndk: # check 'glib' library src_dir = env.get('SRC_DIR') -if not os.path.exists(src_dir + '/extlibs/glib'): +if not os.path.exists(src_dir + '/extlibs/glib/glib-2.40.2'): print ''' *********************************** Error: ************************************** -* glib' library doesn't exist. please download gnome glib to extlibs directory * -* apply the patch as following: * -* Download the Gnome Glib from http://ftp.gnome.org/pub/GNOME/sources/glib/2.40/* +* Android glib library does not exist. please download gnome glib to * +* extlibs/glib directory * +* To build Android glib libraries please follow the instructions as below : * +* Download Gnome Glib from http://ftp.gnome.org/pub/GNOME/sources/glib/2.40/ * * Please go through build instructions at : * -* resource/csdk/connectivity/lib/android/glibpatch_Readme.txt +* resource/csdk/connectivity/lib/android/glibpatch_Readme.txt * ********************************************************************************* ''' - + Exit(1) # Overwrite suffixes and prefixes if env['HOST_OS'] == 'win32': env['OBJSUFFIX'] = '.o' @@ -197,12 +198,9 @@ env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')]) env.AppendUnique(LIBPATH = [src_dir + '/resource/csdk/connectivity/lib/android']) env.AppendUnique(LIBS = ['log', 'glib-2.40.2', 'gthread-2.40.2', 'coap']) -glib_dir = src_dir + '/extlibs/glib/glib-2.40.2/' -env.AppendUnique(CPPPATH = [ - glib_dir, - glib_dir + 'glib', - glib_dir + 'gthread']) - +if env.get('SECURED') == '1': + env.AppendUnique(LIBS = ['tinydtls']) + # 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 # directly (otherwise, it will also be added when build share library) diff --git a/resource/csdk/connectivity/SConstruct b/resource/csdk/connectivity/SConstruct index 3bde13d..6529011 100644 --- a/resource/csdk/connectivity/SConstruct +++ b/resource/csdk/connectivity/SConstruct @@ -7,7 +7,6 @@ # Load common build config SConscript('./build/SConscript') -SConscript('extra_options.scons') Import('env') sample_env = env.Clone() diff --git a/resource/csdk/connectivity/build/SConscript b/resource/csdk/connectivity/build/SConscript index a4da7fc..76dad2e 100644 --- a/resource/csdk/connectivity/build/SConscript +++ b/resource/csdk/connectivity/build/SConscript @@ -71,7 +71,7 @@ help_vars.AddVariables(('DEVICE_NAME', 'Network display name for device', 'OIC-D ###################################################################### # Platform(build target) specific options: SDK/NDK & toolchain ###################################################################### -targets_support_cc = ['linux', 'arduino', 'tizen', 'android'] +targets_support_cc = ['linux', 'arduino', 'tizen'] if target_os in targets_support_cc: # Set cross compile toolchain diff --git a/resource/csdk/connectivity/build/android/SConscript b/resource/csdk/connectivity/build/android/SConscript index f70355e..751b52f 100644 --- a/resource/csdk/connectivity/build/android/SConscript +++ b/resource/csdk/connectivity/build/android/SConscript @@ -23,6 +23,19 @@ if not android_ndk: ''' Exit(1) +# check 'glib' library +src_dir = env.get('SRC_DIR') +if not os.path.exists(src_dir + '/../../../../extlibs/glib/glib-2.40.2'): + print ''' +*********************************** Error: ************************************** +* Android glib library does not exist. please download gnome glib to * +* extlibs/glib directory * +* To build Android glib libraries please follow the instructions as below : * +* Download Gnome Glib from http://ftp.gnome.org/pub/GNOME/sources/glib/2.40/ * +* Please go through build instructions at : * +* lib/android/glibpatch_Readme.txt * +********************************************************************************* + ''' # Overwrite suffixes and prefixes if env['HOST_OS'] == 'win32': env['OBJSUFFIX'] = '.o' @@ -45,11 +58,10 @@ elif platform.system().lower() == 'darwin': # Android build system default cofig env.AppendUnique(CPPDEFINES = ['ANDROID']) +env.AppendUnique(CFLAGS = ['-std=c99']) env.AppendUnique(SHCFLAGS = ['-Wa,--noexecstack']) env.AppendUnique(LINKFLAGS = ['-Wl,--gc-sections', '-Wl,-z,nocopyreloc']) -env.AppendUnique(CPPPATH = [android_ndk + '/platforms/android-19/arch-x86/usr/include/']) - ###################################################################### # Probe Android NDK default flags ###################################################################### @@ -143,10 +155,20 @@ for flags in p.stdout.readlines(): if not platform_ver.isdigit(): platform_ver = '' +# Determine dependency faux SYS_ROOT +dep_sys_root = os.path.join(env.get('SRC_DIR'), 'dep', 'android', target_arch, 'usr') +dep_src_dir = os.path.join(dep_sys_root, 'include') +dep_lib_dir = os.path.join(dep_sys_root, 'lib') + +env['DEP_SYS_ROOT'] = dep_sys_root + +# Add external libraries including boost +env.AppendUnique(CPPPATH = [ dep_src_dir ]) +env.AppendUnique(LIBPATH = [ dep_lib_dir ]) + ###################################################################### # Set release/debug flags ###################################################################### - if env.get('RELEASE'): env.AppendUnique(CCFLAGS = ['-Os']) env.AppendUnique(CPPDEFINES = ['NDEBUG']) @@ -154,19 +176,18 @@ if env.get('RELEASE'): else: env.AppendUnique(CCFLAGS = ['-g']) -env.AppendUnique(CPPDEFINES = ['WITH_POSIX', '__ANDROID__']) if env.get('LOGGING'): - env.AppendUnique(CPPDEFINES = ['-DTB_LOG']) -env.AppendUnique(CCFLAGS = ['-Wall', '-fPIC']) -env.AppendUnique(LINKFLAGS = ['-ldl', '-lpthread']) + env.AppendUnique(CPPDEFINES = ['-DTB_LOG']) -main_dir = Dir('.').srcnode().abspath +env.AppendUnique(CPPDEFINES = ['WITH_POSIX', '__ANDROID__']) +env.AppendUnique(CCFLAGS = ['-Wall', '-fPIC']) +#env.AppendUnique(LINKFLAGS = ['-ldl', '-lpthread']) -glib_dir = main_dir + '/../../../../../extlibs/glib/glib-2.40.2/' -env.AppendUnique(CPPPATH = [ - glib_dir, - glib_dir + 'glib', - glib_dir + 'gthread']) +env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')]) +env.AppendUnique(LIBPATH = [src_dir + '/lib/android']) +env.AppendUnique(LIBS = ['log', 'glib-2.40.2', 'gthread-2.40.2', 'coap']) +if env.get('SECURED') == '1': + env.AppendUnique(LIBS = ['tinydtls']) # 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 diff --git a/resource/csdk/connectivity/build/android/jni/Android.mk b/resource/csdk/connectivity/build/android/jni/Android.mk index 13e9d4d..282900a 100644 --- a/resource/csdk/connectivity/build/android/jni/Android.mk +++ b/resource/csdk/connectivity/build/android/jni/Android.mk @@ -1,150 +1,12 @@ -#define build type -BUILD = debug - -PROJECT_ROOT_PATH ?= ../.. -PROJECT_API_PATH = $(PROJECT_ROOT_PATH)/api -PROJECT_INC_PATH = $(PROJECT_ROOT_PATH)/inc -PROJECT_SRC_PATH = $(PROJECT_ROOT_PATH)/src -PROJECT_COMMON_PATH = $(PROJECT_ROOT_PATH)/common -PROJECT_COMMON_INC_PATH = $(PROJECT_COMMON_PATH)/inc -PROJECT_COMMON_SRC_PATH = $(PROJECT_COMMON_PATH)/src -PROJECT_LIB_PATH = $(PROJECT_ROOT_PATH)/lib -PROJECT_EXTERNAL_PATH = $(PROJECT_ROOT_PATH)/external/inc -DTLS_LIB = $(PROJECT_LIB_PATH)/tinydtls -GLIB_PATH = $(PROJECT_LIB_PATH)/android/glib-2.40.2 - -#Modify below values to enable/disable the Adapter -#Suffix "NO_" to disable given adapter -EDR = EDR_ADAPTER -WIFI = WIFI_ADAPTER -LE = LE_ADAPTER -ETHERNET = NO_ETHERNET_ADAPTER - -#Add Pre processor definitions -DEFINE_FLAG = -DWITH_POSIX -D__ANDROID__ -D__WITH_DTLS__ -DEFINE_FLAG += -D$(EDR) -D$(LE) -D$(WIFI) -D$(ETHERNET) - -#Add Debug flags here -DEBUG_FLAG = -DTB_LOG -#DEBUG_FLAG += -DADB_SHELL - -BUILD_FLAG.debug = $(DEFINE_FLAG) $(DEBUG_FLAG) -BUILD_FLAG.release = $(DEFINE_FLAG) -BUILD_FLAG = $(BUILD_FLAG.$(BUILD)) - -#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -#include glib - -include $(CLEAR_VARS) -LOCAL_PATH = $(PROJECT_LIB_PATH)/android -LOCAL_MODULE = Glib -LOCAL_SRC_FILES := libglib-2.40.2.so -LOCAL_EXPORT_C_INCLUDES = $(GLIB_PATH) \ - $(GLIB_PATH)/glib - -include $(PREBUILT_SHARED_LIBRARY) - -#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -#include glibthread - -include $(CLEAR_VARS) -LOCAL_PATH = $(PROJECT_LIB_PATH)/android -LOCAL_MODULE = GLibThread -LOCAL_SRC_FILES := libgthread-2.40.2.so -LOCAL_EXPORT_C_INCLUDES = $(GLIB_PATH) \ - $(GLIB_PATH)/glib - -include $(PREBUILT_SHARED_LIBRARY) - -#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -#Build TinyDtls - -include $(CLEAR_VARS) -include $(DTLS_LIB)/Android.mk - -#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -#Build CACommon - -include $(CLEAR_VARS) - -#Build Common Libraries -LOCAL_PATH = $(PROJECT_COMMON_SRC_PATH) -LOCAL_MODULE = CACommon -LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog - -LOCAL_SHARED_LIBRARIES = Glib GLibThread - -LOCAL_CFLAGS = -D__ANDROID__ $(DEBUG_FLAG) - -LOCAL_C_INCLUDES = $(PROJECT_COMMON_INC_PATH) -LOCAL_C_INCLUDES += $(PROJECT_API_PATH) - -LOCAL_SRC_FILES = oic_logger.c \ - oic_console_logger.c logger.c oic_malloc.c \ - uarraylist.c uqueue.c oic_string.c \ - uthreadpool.c umutex.c - -include $(BUILD_STATIC_LIBRARY) - -#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -#Build CACoap - include $(CLEAR_VARS) - -LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog -LOCAL_PATH = $(PROJECT_LIB_PATH)/libcoap-4.1.1 -LOCAL_MODULE = CACoap -LOCAL_EXPORT_C_INCLUDES = $(PROJECT_LIB_PATH)/libcoap-4.1.1 -LOCAL_CFLAGS = -DWITH_POSIX -LOCAL_SRC_FILES = pdu.c net.c debug.c encode.c uri.c coap_list.c resource.c hashkey.c \ - str.c option.c async.c subscribe.c block.c - -include $(BUILD_STATIC_LIBRARY) - -#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -#Build CA - -#Relative path to LOCAL_PATH (PROJECT_SRC_PATH) -LOCAL_PLATFORM = android - -ENET_ADAPTER_PATH = ethernet_adapter/$(LOCAL_PLATFORM) -EDR_ADAPTER_PATH = bt_edr_adapter/$(LOCAL_PLATFORM) -LE_ADAPTER_PATH = bt_le_adapter/$(LOCAL_PLATFORM) -WIFI_ADAPTER_PATH = wifi_adapter/$(LOCAL_PLATFORM) -ADAPTER_UTILS = adapter_util - -include $(CLEAR_VARS) - -LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog -LOCAL_PATH = $(PROJECT_SRC_PATH) -LOCAL_MODULE = CA - -LOCAL_STATIC_LIBRARIES = CACommon CACoap TinyDtls - -LOCAL_C_INCLUDES = $(PROJECT_API_PATH) -LOCAL_C_INCLUDES += $(PROJECT_COMMON_INC_PATH) -LOCAL_C_INCLUDES += $(PROJECT_INC_PATH) -LOCAL_C_INCLUDES += $(PROJECT_LIB_PATH)/libcoap-4.1.1 -LOCAL_C_INCLUDES += $(PROJECT_EXTERNAL_PATH) -LOCAL_C_INCLUDES += $(DTLS_LIB) - -LOCAL_CFLAGS += $(BUILD_FLAG) - -LOCAL_SRC_FILES = \ - caconnectivitymanager.c caremotehandler.c cainterfacecontroller.c \ - camessagehandler.c canetworkconfigurator.c caprotocolmessage.c \ - caretransmission.c caqueueingthread.c \ - $(ADAPTER_UTILS)/caadapternetdtls.c $(ADAPTER_UTILS)/caadapterutils.c \ - $(ADAPTER_UTILS)/camsgparser.c \ - $(LE_ADAPTER_PATH)/caleadapter.c $(LE_ADAPTER_PATH)/caleclient.c \ - $(LE_ADAPTER_PATH)/caleserver.c $(LE_ADAPTER_PATH)/caleutils.c \ - $(LE_ADAPTER_PATH)/calenwmonitor.c \ - bt_edr_adapter/caedradapter.c $(EDR_ADAPTER_PATH)/caedrutils.c \ - $(EDR_ADAPTER_PATH)/caedrclient.c $(EDR_ADAPTER_PATH)/caedrserver.c \ - $(EDR_ADAPTER_PATH)/caedrnwmonitor.c \ - wifi_adapter/cawifiadapter.c $(WIFI_ADAPTER_PATH)/cawifiserver.c \ - $(WIFI_ADAPTER_PATH)/cawificlient.c $(WIFI_ADAPTER_PATH)/cawifinwmonitor.c \ - -include $(BUILD_STATIC_LIBRARY) - +LOCAL_MODULE := flags_probe +include $(BUILD_SHARED_LIBRARY) + +$(info TC_PREFIX=$(TOOLCHAIN_PREFIX)) +$(info CFLAGS=$(TARGET_CFLAGS)) +$(info CXXFLAGS=$(TARGET_CXXFLAGS) $(TARGET_NO_EXECUTE_CFLAGS)) +$(info CPPPATH=$(TARGET_C_INCLUDES) $(__ndk_modules.$(APP_STL).EXPORT_C_INCLUDES)) +$(info SYSROOT=$(SYSROOT_LINK)) +$(info LDFLAGS=$(TARGET_LDFLAGS) $(TARGET_NO_EXECUTE_LDFLAGS) $(TARGET_NO_UNDEFINED_LDFLAGS) $(TARGET_RELRO_LDFLAGS)) +$(info TC_VER=$(TOOLCHAIN_VERSION)) +$(info PLATFORM=$(APP_PLATFORM)) \ No newline at end of file diff --git a/resource/csdk/connectivity/common/SConscript b/resource/csdk/connectivity/common/SConscript index a44e8ca..1dccc0b 100644 --- a/resource/csdk/connectivity/common/SConscript +++ b/resource/csdk/connectivity/common/SConscript @@ -17,7 +17,14 @@ ca_common_src_path = ca_common_path + 'src/' env.AppendUnique(CPPPATH = [ 'common/inc/', ]) - + +if ca_os == 'android': + main_dir = Dir('.').srcnode().abspath + glib_dir = main_dir + '/../../../../extlibs/glib/glib-2.40.2/' + env.AppendUnique(CPPPATH = [ + glib_dir, + glib_dir + 'glib', + glib_dir + 'gthread']) temp = env['CPPPATH'] header = ' ' -- 2.7.4