From 3f675ba43da518741f67720132efdaa5ecafbc24 Mon Sep 17 00:00:00 2001 From: Charlie Lenahan Date: Wed, 6 May 2015 14:49:57 -0400 Subject: [PATCH] Fix darwin/ios build issues With these changes enables the LF osx build machine to build and verify Change-Id: I3b93558b94bd1a9c5e5daaa62de3953ce51bed97 Signed-off-by: Charlie Lenahan Reviewed-on: https://gerrit.iotivity.org/gerrit/915 Reviewed-by: Erich Keane Tested-by: jenkins-iotivity --- build_common/darwin/SConscript | 15 +++++++++----- extlibs/gtest/SConscript | 23 +++++++++++----------- resource/SConscript | 7 ++++--- resource/csdk/SConscript | 1 + resource/csdk/connectivity/SConscript | 2 +- resource/csdk/connectivity/src/SConscript | 2 +- .../csdk/connectivity/src/ip_adapter/SConscript | 2 +- service/SConscript | 2 +- tools/darwin/build-ios.sh | 2 +- tools/darwin/mkfwk_osx.sh | 1 - 10 files changed, 32 insertions(+), 25 deletions(-) diff --git a/build_common/darwin/SConscript b/build_common/darwin/SConscript index 2b0386a..4d99761 100644 --- a/build_common/darwin/SConscript +++ b/build_common/darwin/SConscript @@ -4,9 +4,16 @@ ## import os import platform +import commands Import('env') +target_arch = env.get('TARGET_ARCH') +target_os = env.get('TARGET_OS') + +tc_path=commands.getoutput('xcode-select -p') + + # SYS_VERSION build option help_vars = Variables() help_vars.Add('SYS_VERSION', 'MAC OS X version / IOS version', os.environ.get('SYS_VERSION')) @@ -29,8 +36,6 @@ if sys_version is None: ''' Exit(1) -target_arch = env.get('TARGET_ARCH') -target_os = env.get('TARGET_OS') # Set release/debug flags if env.get('RELEASE'): env.AppendUnique(CCFLAGS = ['-Os']) @@ -40,12 +45,12 @@ else: env.AppendUnique(LINKFLAGS = ['-g']) if target_os == 'darwin': - sys_root = '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX' + sys_version + '.sdk/' + sys_root = tc_path + '/Platforms/MacOSX.platform/Developer/SDKs/MacOSX' + sys_version + '.sdk/' else: if target_arch in ['i386', 'x86_64']: - sys_root = '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator' + sys_version + '.sdk/' + sys_root = tc_path + '/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator' + sys_version + '.sdk/' else: - sys_root = '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS' + sys_version + '.sdk/' + sys_root = tc_path + '/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS' + sys_version + '.sdk/' # Set arch flags env.AppendUnique(CCFLAGS = ['-arch', target_arch, '-isysroot', sys_root]) diff --git a/extlibs/gtest/SConscript b/extlibs/gtest/SConscript index 396e4f3..4dfa7ea 100644 --- a/extlibs/gtest/SConscript +++ b/extlibs/gtest/SConscript @@ -37,29 +37,30 @@ if target_os == 'darwin': gtest_lib_dir = gtest_dir + '/lib' gtest_dotlib_dir = gtest_lib_dir + '/.libs' - if not os.path.exists(gtest_lib_dir): - print 'Create a directory' - os.mkdir(gtest_lib_dir) + if not os.path.exists(gtest_lib_dir): +# print 'Create a directory' +# os.mkdir(gtest_lib_dir) - print 'Change to a directory' - os.chdir(gtest_lib_dir) print 'Invoke cmake command to generate appropriate make files' - env.Configure(gtest_lib_dir, 'cmake -G"Unix Makefiles" ..') + env.Configure(gtest_dir, './configure') # Run make on gtest print 'Making google unit test' - env.Configure(gtest_lib_dir, 'make') + env.Configure(gtest_dir, 'make') - print 'Create a directory' - os.mkdir(gtest_dotlib_dir) +# print 'Create a directory' +# os.mkdir(gtest_dotlib_dir) print 'Change to a directory' os.chdir(gtest_dotlib_dir) +## print 'Change to a directory' +# os.chdir(gtest_lib_dir) + print 'Create hard links pointing to gtest libraries' - os.link('../' + 'libgtest.a', 'libgtest.a') - os.link('../' + 'libgtest_main.a', 'libgtest_main.a') + os.link('libgtest.a', gtest_lib_dir + 'libgtest.a') + os.link('libgtest_main.a', gtest_lib_dir + 'libgtest_main.a') print 'Create hard links pointing to gtest libraries - DONE' diff --git a/resource/SConscript b/resource/SConscript index 9f96e77..95a2468 100644 --- a/resource/SConscript +++ b/resource/SConscript @@ -42,14 +42,14 @@ SConscript('csdk/connectivity/SConscript') # Build liboctbstack SConscript('csdk/SConscript') -if target_os not in ['arduino','darwin']: +if target_os not in ['arduino','darwin','ios']: # Build liboc_logger SConscript('oc_logger/SConscript') # Build liboc SConscript('src/SConscript') -if target_os not in ['arduino','darwin', 'android']: +if target_os not in ['arduino','darwin','ios','android']: # Build examples SConscript('examples/SConscript') @@ -64,7 +64,8 @@ if target_os == 'linux': SConscript('unit_tests.scons') elif target_os == 'darwin': - # Build linux samples for now. + env.Command('../../out/darwin/iotivity-csdk.framework',None,src_dir + '/tools/darwin/mkfwk_osx.sh') + # Build linux samples for now SConscript('csdk/stack/samples/linux/SimpleClientServer/SConscript') # Build C stack's unit tests. diff --git a/resource/csdk/SConscript b/resource/csdk/SConscript index 82ed700..63e6462 100644 --- a/resource/csdk/SConscript +++ b/resource/csdk/SConscript @@ -78,6 +78,7 @@ if target_os == 'arduino': elif target_os not in ['darwin','ios']: liboctbstack_env.AppendUnique(CFLAGS = ['-fPIC']) if target_os in ['darwin', 'ios']: + env.AppendUnique(CPPDEFINES = ['_DARWIN_C_SOURCE']) liboctbstack_env.AppendUnique(CPPDEFINES = ['_DARWIN_C_SOURCE']) liboctbstack_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')]) if target_os not in ['arduino']: diff --git a/resource/csdk/connectivity/SConscript b/resource/csdk/connectivity/SConscript index acfbac7..bec1000 100644 --- a/resource/csdk/connectivity/SConscript +++ b/resource/csdk/connectivity/SConscript @@ -25,7 +25,7 @@ if 'ALL' in transport: env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','NO_EDR_ADAPTER','NO_LE_ADAPTER']) elif target_os == 'tizen': env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','EDR_ADAPTER','LE_ADAPTER']) - elif target_os == 'darwin': + elif target_os in['darwin','ios']: env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','NO_EDR_ADAPTER','NO_LE_ADAPTER']) else: env.AppendUnique(CPPDEFINES = ['IP_ADAPTER','EDR_ADAPTER','LE_ADAPTER']) diff --git a/resource/csdk/connectivity/src/SConscript b/resource/csdk/connectivity/src/SConscript index 45db09b..1775891 100644 --- a/resource/csdk/connectivity/src/SConscript +++ b/resource/csdk/connectivity/src/SConscript @@ -30,7 +30,7 @@ env.AppendUnique(CPPPATH = [root_dir + '/common/inc/']) if ca_os not in ['arduino', 'windows', 'winrt']: env.AppendUnique(CPPDEFINES = ['WITH_POSIX']) -if ca_os in ['darwin']: +if ca_os in ['darwin','ios']: env.AppendUnique(CPPDEFINES = ['_DARWIN_C_SOURCE']) #Getting common source files diff --git a/resource/csdk/connectivity/src/ip_adapter/SConscript b/resource/csdk/connectivity/src/ip_adapter/SConscript index 2320380..f000980 100644 --- a/resource/csdk/connectivity/src/ip_adapter/SConscript +++ b/resource/csdk/connectivity/src/ip_adapter/SConscript @@ -23,7 +23,7 @@ else: env.AppendUnique(CA_SRC=[src_dir+'caipserver.c']) #Source files to build in Linux platform -if target_os == 'linux': +if target_os in ['linux','darwin','ios']: env.AppendUnique(CA_SRC=[src_dir+'linux/caipnwmonitor.c']) if target_os == 'tizen': diff --git a/service/SConscript b/service/SConscript index d0b0b0a..b2a827e 100644 --- a/service/SConscript +++ b/service/SConscript @@ -26,7 +26,7 @@ Import('env') target_os = env.get('TARGET_OS') -if target_os not in ['arduino','darwin']: +if target_os not in ['arduino','darwin','ios']: # Build things manager project SConscript('things-manager/SConscript') diff --git a/tools/darwin/build-ios.sh b/tools/darwin/build-ios.sh index edde6fe..1a4ee9e 100755 --- a/tools/darwin/build-ios.sh +++ b/tools/darwin/build-ios.sh @@ -1,7 +1,7 @@ #!/bin/bash # change this to what version of Xcode you have installed -SDKVER=8.2 +SDKVER=8.3 scons TARGET_OS=ios TARGET_ARCH=armv7 SYS_VERSION=$SDKVER RELEASE=false scons TARGET_OS=ios TARGET_ARCH=armv7s SYS_VERSION=$SDKVER RELEASE=false diff --git a/tools/darwin/mkfwk_osx.sh b/tools/darwin/mkfwk_osx.sh index f0ede46..e5e9d35 100755 --- a/tools/darwin/mkfwk_osx.sh +++ b/tools/darwin/mkfwk_osx.sh @@ -81,7 +81,6 @@ find $OUTDIR/objs -name "*.o" | xargs rm echo "Framework: Copying includes..." cp -r resource/csdk/stack/include/*.h $FRAMEWORK_BUNDLE/Headers -cp -r resource/csdk/ocsocket/include/*.h $FRAMEWORK_BUNDLE/Headers cp -r resource/csdk/ocrandom/include/*.h $FRAMEWORK_BUNDLE/Headers cp -r resource/csdk/ocmalloc/include/*.h $FRAMEWORK_BUNDLE/Headers -- 2.7.4