iOS support for the CSDK is still experimental.
Change-Id: Ie5572d5246ffb2f1098437e78f332373eed4d8e9
Signed-off-by: Charlie Lenahan <charlie.lenahan@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/596
Reviewed-by: Patrick Lankswert <patrick.lankswert@intel.com>
Tested-by: Patrick Lankswert <patrick.lankswert@intel.com>
import os
# List of targets that only support the IoTivity C SDK.
-targets_csdk_only = ['arduino','darwin']
+targets_csdk_only = ['arduino','darwin','ios']
# Load common build config
SConscript('build_common/SConscript', exports = 'targets_csdk_only')
print '''
*********************************** Error *************************************
* MAC OSX/IOS version isn't set, please set it in command line as : *
-* # scons SYS_VERSION=<version> ... *
+* # scons TARGET_ARCH=<arch> TARGET_OS=<os> SYS_VERSION=<version> ... *
* To get the version, please see: *
* /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ *
* /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/ *
+* <arch> is 'armv7','armv7s','arm64','i386', 'x86_64'
+* <os> is 'darwin','ios'
*******************************************************************************
'''
Exit(1)
OCTBSTACK_SRC + 'ocsecurity.c',
OCTBSTACK_SRC + 'oicgroup.c'
]
-if target_os in ['arduino','darwin'] :
+if target_os in ['arduino','darwin','ios'] :
static_liboctbstack = liboctbstack_env.StaticLibrary('octbstack', liboctbstack_src)
liboctbstack_env.InstallTarget(static_liboctbstack, 'liboctbstack')
else:
Import('env')
-
+target_os = env.get('TARGET_OS')
samples_env = env.Clone()
######################################################################
# Build flags
samples_env.AppendUnique(LIBS = ['-lpthread'])
samples_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
-samples_env.PrependUnique(LIBS = ['oc', 'octbstack', 'coap', 'oc_logger', 'm'])
+if target_os in ['darwin','ios']:
+ samples_env.PrependUnique(LIBS = ['octbstack', 'coap', 'm'])
+else:
+ samples_env.PrependUnique(LIBS = ['oc', 'octbstack', 'coap', 'oc_logger', 'm'])
samples_env.AppendUnique(CPPDEFINES = ['CA_INT', 'TB_LOG'])
--- /dev/null
+#!/bin/bash
+
+# change this to what version of Xcode you have installed
+SDKVER=8.2
+
+scons TARGET_OS=ios TARGET_ARCH=armv7 SYS_VERSION=$SDKVER RELEASE=false
+scons TARGET_OS=ios TARGET_ARCH=armv7s SYS_VERSION=$SDKVER RELEASE=false
+scons TARGET_OS=ios TARGET_ARCH=arm64 SYS_VERSION=$SDKVER RELEASE=false
+scons TARGET_OS=ios TARGET_ARCH=i386 SYS_VERSION=$SDKVER RELEASE=false
+scons TARGET_OS=ios TARGET_ARCH=x86_64 SYS_VERSION=$SDKVER RELEASE=false
--- /dev/null
+#!/bin/sh
+
+
+#VERSION_IOS="${MAJOR_VERSION}.${MINOR_VERSION}.${RELEASE_NUMBER}.${BUILD_NUMBER}"
+VERSION_IOS="0.9.0.1"
+
+
+OUTDIR=$PWD/out/ios
+BUILD=debug
+LIBCOAP=libcoap
+SDKLIB=liboctbstack
+LIPO="xcrun -sdk iphoneos lipo"
+
+
+VERSION_TYPE=Alpha
+FRAMEWORK_NAME=iotivity-csdk
+FRAMEWORK_VERSION=A
+FRAMEWORK_CURRENT_VERSION=${VERSION_IOS}
+FRAMEWORK_COMPATIBILITY_VERSION=${VERSION_IOS}
+FRAMEWORKDIR=out/ios
+
+FRAMEWORK_BUNDLE=$FRAMEWORKDIR/$FRAMEWORK_NAME.framework
+rm -rf $FRAMEWORK_BUNDLE
+
+echo "Framework: Setting up directories..."
+mkdir -p $FRAMEWORK_BUNDLE
+mkdir -p $FRAMEWORK_BUNDLE/Versions
+mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION
+mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Resources
+mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Headers
+mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Documentation
+
+echo "Framework: Creating symlinks..."
+ln -s $FRAMEWORK_VERSION $FRAMEWORK_BUNDLE/Versions/Current
+ln -s Versions/Current/Headers $FRAMEWORK_BUNDLE/Headers
+ln -s Versions/Current/Resources $FRAMEWORK_BUNDLE/Resources
+ln -s Versions/Current/Documentation $FRAMEWORK_BUNDLE/Documentation
+ln -s Versions/Current/$FRAMEWORK_NAME $FRAMEWORK_BUNDLE/$FRAMEWORK_NAME
+FRAMEWORK_INSTALL_NAME=$FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/$FRAMEWORK_NAME
+
+lipolite()
+{
+ PREV="$PWD"
+ cd "$1"
+ ar -x "$2"
+ cd "$PREV"
+}
+
+
+echo "Extracting libraries..."
+mkdir $OUTDIR/objs
+
+ARCHS="armv7 armv7s arm64 i386 x86_64"
+FATFILE=""
+
+for ARCH in $ARCHS
+do
+ echo "extracting $ARCH"
+ mkdir $OUTDIR/objs/$ARCH
+ lipolite $OUTDIR/objs/$ARCH "$OUTDIR/$ARCH/$BUILD/$LIBCOAP.a"
+ lipolite $OUTDIR/objs/$ARCH "$OUTDIR/$ARCH/$BUILD/$SDKLIB.a"
+ ar -r $OUTDIR/objs/$ARCH.a $OUTDIR/objs/$ARCH/*.o
+done
+
+
+echo "Lipoing library into $FRAMEWORK_INSTALL_NAME..."
+$LIPO \
+ -create \
+ -arch armv7 "$OUTDIR/objs/armv7.a" \
+ -arch armv7s "$OUTDIR/objs/armv7s.a" \
+ -arch arm64 "$OUTDIR/objs/arm64.a" \
+ -arch i386 "$OUTDIR/objs/i386.a" \
+ -arch x86_64 "$OUTDIR/objs/x86_64.a" \
+ -output "$FRAMEWORK_INSTALL_NAME" \
+ || abort "Lipo $1 failed"
+
+echo rm -rf objs
+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
+
+echo "Framework: Creating plist..."
+cat > $FRAMEWORK_BUNDLE/Resources/Info.plist <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>${FRAMEWORK_NAME}</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.iotivity</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>FMWK</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>${FRAMEWORK_CURRENT_VERSION}</string>
+</dict>
+</plist>
+EOF
+
+echo
+echo " ================================================================="
+echo " Done"
+echo
--- /dev/null
+#!/bin/sh
+
+
+#VERSION_IOS="${MAJOR_VERSION}.${MINOR_VERSION}.${RELEASE_NUMBER}.${BUILD_NUMBER}"
+VERSION_IOS="0.9.0.1"
+
+
+OUTDIR=$PWD/out/darwin
+BUILD=debug
+LIBCOAP=libcoap
+SDKLIB=liboctbstack
+LIPO="xcrun -sdk iphoneos lipo"
+
+
+VERSION_TYPE=Alpha
+FRAMEWORK_NAME=iotivity-csdk
+FRAMEWORK_VERSION=A
+FRAMEWORK_CURRENT_VERSION=${VERSION_IOS}
+FRAMEWORK_COMPATIBILITY_VERSION=${VERSION_IOS}
+FRAMEWORKDIR=out/darwin
+
+FRAMEWORK_BUNDLE=$FRAMEWORKDIR/$FRAMEWORK_NAME.framework
+rm -rf $FRAMEWORK_BUNDLE
+
+echo "Framework: Setting up directories..."
+mkdir -p $FRAMEWORK_BUNDLE
+mkdir -p $FRAMEWORK_BUNDLE/Versions
+mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION
+mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Resources
+mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Headers
+mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Documentation
+
+echo "Framework: Creating symlinks..."
+ln -s $FRAMEWORK_VERSION $FRAMEWORK_BUNDLE/Versions/Current
+ln -s Versions/Current/Headers $FRAMEWORK_BUNDLE/Headers
+ln -s Versions/Current/Resources $FRAMEWORK_BUNDLE/Resources
+ln -s Versions/Current/Documentation $FRAMEWORK_BUNDLE/Documentation
+ln -s Versions/Current/$FRAMEWORK_NAME $FRAMEWORK_BUNDLE/$FRAMEWORK_NAME
+FRAMEWORK_INSTALL_NAME=$FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/$FRAMEWORK_NAME
+
+lipolite()
+{
+ PREV="$PWD"
+ cd "$1"
+ ar -x "$2"
+ cd "$PREV"
+}
+
+
+echo "Extracting libraries..."
+mkdir $OUTDIR/objs
+
+ARCHS="x86_64"
+FATFILE=""
+
+for ARCH in $ARCHS
+do
+ echo "extracting $ARCH"
+ mkdir $OUTDIR/objs/$ARCH
+ lipolite $OUTDIR/objs/$ARCH "$OUTDIR/$ARCH/$BUILD/$LIBCOAP.a"
+ lipolite $OUTDIR/objs/$ARCH "$OUTDIR/$ARCH/$BUILD/$SDKLIB.a"
+ ar -r $OUTDIR/objs/$ARCH.a $OUTDIR/objs/$ARCH/*.o
+done
+
+
+echo "Lipoing library into $FRAMEWORK_INSTALL_NAME..."
+cp $OUTDIR/objs/x86_64.a "$FRAMEWORK_INSTALL_NAME"
+
+#$LIPO \
+# -create \
+# -arch armv7 "$OUTDIR/objs/armv7.a" \
+# -arch armv7s "$OUTDIR/objs/armv7s.a" \
+# -arch arm64 "$OUTDIR/objs/arm64.a" \
+# -arch i386 "$OUTDIR/objs/i386.a" \
+# -arch x86_64 "$OUTDIR/objs/x86_64.a" \
+# -output "$FRAMEWORK_INSTALL_NAME" \
+# || abort "Lipo $1 failed"
+
+echo rm -rf objs
+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
+
+echo "Framework: Creating plist..."
+cat > $FRAMEWORK_BUNDLE/Resources/Info.plist <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>${FRAMEWORK_NAME}</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.iotivity</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>FMWK</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>${FRAMEWORK_CURRENT_VERSION}</string>
+</dict>
+</plist>
+EOF
+
+echo
+echo " ================================================================="
+echo " Done"
+echo