From 791c99ed223c8491c9da2c9863da07cc84122514 Mon Sep 17 00:00:00 2001 From: Stefan Radomski Date: Fri, 4 Jul 2014 15:00:48 +0200 Subject: Polished iOS builds and docs --- CMakeLists.txt | 9 +++-- README.md | 49 ++++++++++++++++++++------ contrib/build-scripts/build-uscxml-ios.sh | 35 +++++++++++-------- contrib/cmake/CrossCompile-iOS-Sim.cmake | 18 ++++++---- contrib/cmake/CrossCompile-iOS.cmake | 31 +++++++++++------ contrib/ctest/hosts/default.nmake.ctest | 8 +++-- contrib/ctest/tests/ecma.ctest | 2 +- contrib/ctest/tests/general.ctest | 2 +- contrib/ctest/tests/plugins-ecma.ctest | 2 +- contrib/ctest/tests/xpath.ctest | 2 +- docs/BUILDING.md | 58 +++++++++++++++++++++++++++---- 11 files changed, 160 insertions(+), 56 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2de5bee..7ba26d3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -137,6 +137,7 @@ endif() SET(USCXML_PREBUILT_LIBRARY_PATH) SET(USCXML_PREBUILT_HEADER_PATH "${PROJECT_SOURCE_DIR}/contrib/prebuilt") + # search roots for libraries if(CMAKE_CROSSCOMPILING) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE "ONLY") @@ -278,8 +279,12 @@ else() endif() include_directories(${USCXML_PREBUILT_LIBRARY_PATH}/include) -#set(CMAKE_PREFIX_PATH ${CMAKE_FIND_ROOT_PATH}) -#message(STATUS "Searching for prebuilt libraries in: ${CMAKE_FIND_ROOT_PATH}") +if (CMAKE_CROSSCOMPILING) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${CMAKE_PREFIX_PATH}) +endif() +# message(STATUS "CMAKE_FIND_ROOT_PATH: ${CMAKE_FIND_ROOT_PATH}") +# message(STATUS "CMAKE_PREFIX_PATH : ${CMAKE_PREFIX_PATH}") +# message(FATAL_ERROR "") if (WIN32) set(BUILD_SHARED_LIBS OFF) diff --git a/README.md b/README.md index 144296b..3849c59 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,29 @@ [![Build Status](https://travis-ci.org/sradomski/uscxml.png?branch=master)](https://travis-ci.org/sradomski/uscxml) + + +**Table of Contents** + + - [General](#general) + - [Test Reports](#test-reports) + - [License](#license) + - [Download](#download) + - [Usage](#usage) + - [Non-Blocking Interpretation with SCXML from URL](#non-blocking-interpretation-with-scxml-from-url) + - [Blocking Interpretation with inline SCXML](#blocking-interpretation-with-inline-scxml) + - [Interleaved Interpretation with inline SCXML](#interleaved-interpretation-with-inline-scxml) + - [Callbacks for an Interpreter](#callbacks-for-an-interpreter) + - [Advanced Topics](#advanced-topics) + - [Embedding uSCXML](#embedding-uscxml) + - [Extending uSCXML](#extending-uscxml) + - [uSCXML on iOS](#uscxml-on-ios) +- [Acknowledgments](#acknowledgments) + + + +## General + uSCXML is a SCXML interpreter written in C/C++. It is mostly feature-complete and to a large extend [standards compliant](https://github.com/tklab-tud/uscxml#test-reports). It runs on Linux, Windows and MacOSX, each 32- as well as 64Bits as well as iOS. @@ -36,7 +59,7 @@ There are still a few rough edges though, especially with the plugins and custom * PHP module for apache and cli interpreter * Java bindings -## Test Reports +### Test Reports * We continuously run the [W3C IRP tests](http://www.w3.org/Voice/2013/scxml-irp/) for SCXML. * Have a look at the [result](http://uscxml.tk.informatik.tu-darmstadt.de/cdash/index.php?project=uscxml) for the various platforms. @@ -63,13 +86,13 @@ uSCXML still fails the following ecmascript tests: -## License +### License uSCXML itself is distributed under the Simplified BSD license as in, do not sue us and do not misrepresent authorship. Please have a look at the licenses of the [libraries we depend upon](https://github.com/tklab-tud/uscxml/blob/master/docs/BUILDING.md#build-dependencies) as well. -## Download +### Download We do not yet feature installers. Please download the source and have a look at the [build instructions](https://github.com/tklab-tud/uscxml/blob/master/docs/BUILDING.md). @@ -135,16 +158,22 @@ control-flow upon various events in the Interpreter. This will cause the interpreter to invoke the callbacks from the monitor whenever the corresponding internal phase is reached. -## Embedding uSCXML +## Advanced Topics + +### Embedding uSCXML There are bindings for Java and C# with some examples in the embedding directory. The bindings consist of -two parts each (i) the C++ uscxml interpreter compiled as a loadable module for the target language and (ii) a target -language specific module (uscxml.jar / uscxmlCSharp.dll) with the wrapper classes. The first one is loaded by the -target language (System.loadLibrary / SetDLLDirectory) while the second is to be included in your actual project. -Have a look at the examples in embedding and adapt the paths to reflect your setup. See the [build -instructions](https://github.com/tklab-tud/uscxml/blob/master/docs/BUILDING.md) for details on how to build these. +two parts each + +1. The C++ uscxml interpreter compiled as a loadable module for the target language and +2. A target language specific module (uscxml.jar / uscxmlCSharp.dll) with the wrapper classes. + +The first one is loaded by the target language (System.loadLibrary / SetDLLDirectory) while the second is to be +included in your actual project. Have a look at the examples in embedding and adapt the paths to reflect +your setup. See the [build instructions](https://github.com/tklab-tud/uscxml/blob/master/docs/BUILDING.md) for +details on how to build these. -## Extending uSCXML +### Extending uSCXML The uSCXML interpreter can be extended by introducing new diff --git a/contrib/build-scripts/build-uscxml-ios.sh b/contrib/build-scripts/build-uscxml-ios.sh index fccea19..f2fbee7 100755 --- a/contrib/build-scripts/build-uscxml-ios.sh +++ b/contrib/build-scripts/build-uscxml-ios.sh @@ -8,14 +8,20 @@ unset MACOSX_DEPLOYMENT_TARGET # be ridiculously conservative with regard to ios features -export IPHONEOS_DEPLOYMENT_TARGET="1.0" + +if [ -z "${IPHONEOS_DEPLOYMENT_TARGET+xxx}" ]; then + export IPHONEOS_DEPLOYMENT_TARGET="1.0" +fi + +if [ -z "${IOS_SDK_VERSION+xxx}" ]; then + export IOS_SDK_VERSION=7.1 +fi # exit on error set -e ME=`basename $0` DIR="$( cd "$( dirname "$0" )" && pwd )" -SDK_VER="6.1" CWD=`pwd` BUILD_DIR="/tmp/build-uscxml-ios" @@ -24,22 +30,21 @@ BUILD_DIR="/tmp/build-uscxml-ios" # # Build device with older SDK for old architectures # -export IOS_SDK_VERSION=5.1 - -mkdir -p ${BUILD_DIR}/device-${IOS_SDK_VERSION}-debug &> /dev/null -cd ${BUILD_DIR}/device-${IOS_SDK_VERSION}-debug -cmake ${DIR}/../../ -DCMAKE_TOOLCHAIN_FILE=${DIR}/../cmake/CrossCompile-iOS.cmake -DDIST_PREPARE=ON -DCMAKE_BUILD_TYPE=Debug -make -j4 - -mkdir -p ${BUILD_DIR}/device-${IOS_SDK_VERSION}-release &> /dev/null -cd ${BUILD_DIR}/device-${IOS_SDK_VERSION}-release -cmake ${DIR}/../../ -DCMAKE_TOOLCHAIN_FILE=${DIR}/../cmake/CrossCompile-iOS.cmake -DDIST_PREPARE=ON -DCMAKE_BUILD_TYPE=Release -make -j4 +# export IOS_SDK_VERSION=5.1 +# +# mkdir -p ${BUILD_DIR}/device-${IOS_SDK_VERSION}-debug &> /dev/null +# cd ${BUILD_DIR}/device-${IOS_SDK_VERSION}-debug +# cmake ${DIR}/../../ -DCMAKE_TOOLCHAIN_FILE=${DIR}/../cmake/CrossCompile-iOS.cmake -DDIST_PREPARE=ON -DCMAKE_BUILD_TYPE=Debug +# make -j4 +# +# mkdir -p ${BUILD_DIR}/device-${IOS_SDK_VERSION}-release &> /dev/null +# cd ${BUILD_DIR}/device-${IOS_SDK_VERSION}-release +# cmake ${DIR}/../../ -DCMAKE_TOOLCHAIN_FILE=${DIR}/../cmake/CrossCompile-iOS.cmake -DDIST_PREPARE=ON -DCMAKE_BUILD_TYPE=Release +# make -j4 # -# Build device with current SDK +# Build device and sim with current SDK # -export IOS_SDK_VERSION=6.1 mkdir -p ${BUILD_DIR}/device-${IOS_SDK_VERSION}-debug &> /dev/null cd ${BUILD_DIR}/device-${IOS_SDK_VERSION}-debug diff --git a/contrib/cmake/CrossCompile-iOS-Sim.cmake b/contrib/cmake/CrossCompile-iOS-Sim.cmake index 5a11761..7ed22fb 100644 --- a/contrib/cmake/CrossCompile-iOS-Sim.cmake +++ b/contrib/cmake/CrossCompile-iOS-Sim.cmake @@ -2,9 +2,7 @@ # build$ cmake .. -DCMAKE_TOOLCHAIN_FILE=../contrib/cmake/CrossCompile-iOS-Sim.cmake SET(CMAKE_SYSTEM_NAME Generic) -if ("$ENV{IOS_SDK_VERSION}" STREQUAL "") - SET(CMAKE_SYSTEM_VERSION 6.1) -else() +if (NOT "$ENV{IOS_SDK_VERSION}" STREQUAL "") SET(CMAKE_SYSTEM_VERSION $ENV{IOS_SDK_VERSION}) endif() SET(CMAKE_SYSTEM_PROCESSOR i386) @@ -12,6 +10,7 @@ SET(CMAKE_SYSTEM_PROCESSOR i386) SET(ARCHS "-arch i386") SET(CMAKE_CROSSCOMPILING_TARGET IOS) SET(CMAKE_OSX_ARCHITECTURES "i386") +SET(IOS_MINPHONE_OS "4.3") SET(IOS ON) SET(IOSSIM ON) SET(UNIX ON) @@ -44,6 +43,10 @@ if (IOS6_OR_LATER) # we have to use clang - llvm will choke on those __has_feature macros? SET (CMAKE_C_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang") SET (CMAKE_CXX_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++") + SET (CMAKE_AR "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar" CACHE FILEPATH "" FORCE) + SET (CMAKE_LINKER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" CACHE FILEPATH "" FORCE) + SET (CMAKE_NM "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm" CACHE FILEPATH "" FORCE) + SET (CMAKE_STRIP "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip" CACHE FILEPATH "" FORCE) if ($ENV{MACOSX_DEPLOYMENT_TARGET}) message(FATAL_ERROR "llvm will croak with MACOSX_DEPLOYMENT_TARGET environment variable set when building for ios - unset MACOSX_DEPLOYMENT_TARGET") @@ -68,15 +71,16 @@ set(CMAKE_SYSTEM_FRAMEWORK_PATH /System/Library/Frameworks) # force compiler and linker flags -SET(CMAKE_C_LINK_FLAGS ${ARCHS}) -SET(CMAKE_CXX_LINK_FLAGS ${ARCHS}) -SET(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} --sysroot=${SDKROOT}") -SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} --sysroot=${SDKROOT}") +SET(CMAKE_C_LINK_FLAGS "${ARCHS} --sysroot=${SDKROOT} -miphoneos-version-min=${IOS_MINPHONE_OS}") +SET(CMAKE_CXX_LINK_FLAGS "${ARCHS} --sysroot=${SDKROOT} -miphoneos-version-min=${IOS_MINPHONE_OS}") +# SET(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} --sysroot=${SDKROOT}") +# SET(CMAKE_CXX_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} --sysroot=${SDKROOT}") # SET(CMAKE_C_FLAGS ${ARCHS}) # C_FLAGS wont stick, use ADD_DEFINITIONS instead # SET(CMAKE_CXX_FLAGS ${ARCHS}) ADD_DEFINITIONS(${ARCHS}) ADD_DEFINITIONS("--sysroot=${SDKROOT}") +ADD_DEFINITIONS("-miphoneos-version-min=${IOS_MINPHONE_OS}") # ios headers INCLUDE_DIRECTORIES(SYSTEM "${SDKROOT}/usr/include") diff --git a/contrib/cmake/CrossCompile-iOS.cmake b/contrib/cmake/CrossCompile-iOS.cmake index 6d8bf7d..3e67c79 100644 --- a/contrib/cmake/CrossCompile-iOS.cmake +++ b/contrib/cmake/CrossCompile-iOS.cmake @@ -2,9 +2,7 @@ # build$ cmake .. -DCMAKE_TOOLCHAIN_FILE=../contrib/cmake/CrossCompile-iOS.cmake SET(CMAKE_SYSTEM_NAME Generic) -if ("$ENV{IOS_SDK_VERSION}" STREQUAL "") - SET(CMAKE_SYSTEM_VERSION 6.1) -else() +if (NOT "$ENV{IOS_SDK_VERSION}" STREQUAL "") SET(CMAKE_SYSTEM_VERSION $ENV{IOS_SDK_VERSION}) endif() SET(CMAKE_SYSTEM_PROCESSOR arm) @@ -31,29 +29,42 @@ else() SET(DEVROOT "/Developer/Platforms/iPhoneOS.platform/Developer") endif() +set(IOS6_OR_LATER OFF) +if (${CMAKE_SYSTEM_VERSION} VERSION_EQUAL "5.0" OR ${CMAKE_SYSTEM_VERSION} VERSION_GREATER "5.0") + SET(CMAKE_OSX_ARCHITECTURES armv6 armv7) + SET(ARCHS "-arch armv6 -arch armv7") +endif() + if (${CMAKE_SYSTEM_VERSION} VERSION_EQUAL "6.0" OR ${CMAKE_SYSTEM_VERSION} VERSION_GREATER "6.0") set(IOS6_OR_LATER ON) -else() - set(IOS6_OR_LATER OFF) + SET(CMAKE_OSX_ARCHITECTURES armv7 armv7s) + SET(ARCHS "-arch armv7 -arch armv7s") endif() -if (IOS6_OR_LATER) - # no armv6 support in ios6 - armv7s was added, but we did no compile our dependencies for it +if (${CMAKE_SYSTEM_VERSION} VERSION_EQUAL "7.0" OR ${CMAKE_SYSTEM_VERSION} VERSION_GREATER "7.0") + set(IOS6_OR_LATER ON) SET(CMAKE_OSX_ARCHITECTURES armv7 armv7s) SET(ARCHS "-arch armv7 -arch armv7s") + # SET(CMAKE_OSX_ARCHITECTURES armv7 armv7s arm64) + # SET(ARCHS "-arch armv7 -arch armv7s -arch arm64") +endif() + +if (IOS6_OR_LATER) + # no armv6 support in ios6 - armv7s was added, but we did no compile our dependencies for it # we have to use clang - llvm will choke on those __has_feature macros? SET (CMAKE_C_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang") SET (CMAKE_CXX_COMPILER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++") + SET (CMAKE_AR "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar" CACHE FILEPATH "" FORCE) + SET (CMAKE_LINKER "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" CACHE FILEPATH "" FORCE) + SET (CMAKE_NM "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm" CACHE FILEPATH "" FORCE) + SET (CMAKE_STRIP "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip" CACHE FILEPATH "" FORCE) if ($ENV{MACOSX_DEPLOYMENT_TARGET}) message(FATAL_ERROR "llvm will croak with MACOSX_DEPLOYMENT_TARGET environment variable set when building for ios - unset MACOSX_DEPLOYMENT_TARGET") endif() else() - SET(CMAKE_OSX_ARCHITECTURES armv6 armv7) - SET(ARCHS "-arch armv6 -arch armv7") - SET (CMAKE_C_COMPILER "${DEVROOT}/usr/bin/gcc") SET (CMAKE_CXX_COMPILER "${DEVROOT}/usr/bin/g++") diff --git a/contrib/ctest/hosts/default.nmake.ctest b/contrib/ctest/hosts/default.nmake.ctest index a9ea76d..eac99b9 100644 --- a/contrib/ctest/hosts/default.nmake.ctest +++ b/contrib/ctest/hosts/default.nmake.ctest @@ -8,13 +8,17 @@ set(CTEST_BUILD_CONFIGURATION "Debug") set(CTEST_BUILD_NAME "${CMAKE_SYSTEM}") set(RETAIN_BUILD_DIR OFF) +include("tests/general.ctest") +include("common.ctest.inc") + +set(RETAIN_BUILD_DIR ON) include("tests/ecma.ctest") include("common.ctest.inc") -set(RETAIN_BUILD_DIR OFF) +set(RETAIN_BUILD_DIR ON) include("tests/xpath.ctest") include("common.ctest.inc") set(RETAIN_BUILD_DIR OFF) -include("tests/plugins.ctest") +include("tests/plugins-ecma.ctest") include("common.ctest.inc") diff --git a/contrib/ctest/tests/ecma.ctest b/contrib/ctest/tests/ecma.ctest index 61a8da3..8659120 100644 --- a/contrib/ctest/tests/ecma.ctest +++ b/contrib/ctest/tests/ecma.ctest @@ -1,4 +1,4 @@ set(CTEST_BUILD_OPTIONS "-DRUN_W3C_ECMA_TESTS:BOOL=ON -DENABLE_GCOV:BOOL=ON") -set(CTEST_BUILD_NAME "${CTEST_BUILD_NAME} - ecma") +set(CTEST_BUILD_NAME "${CMAKE_SYSTEM} - ecma") set(USCXML_INCLUDE_LABEL_REGEX ".*ecma.*") set(USCXML_EXCLUDE_LABEL_REGEX "") \ No newline at end of file diff --git a/contrib/ctest/tests/general.ctest b/contrib/ctest/tests/general.ctest index 701cc70..fd120fa 100644 --- a/contrib/ctest/tests/general.ctest +++ b/contrib/ctest/tests/general.ctest @@ -1,4 +1,4 @@ set(CTEST_BUILD_OPTIONS "-DENABLE_GCOV:BOOL=ON") -set(CTEST_BUILD_NAME "${CTEST_BUILD_NAME} - general") +set(CTEST_BUILD_NAME "${CMAKE_SYSTEM} - general") set(USCXML_INCLUDE__LABEL_REGEX "") set(USCXML_EXCLUDE_LABEL_REGEX ".*[ecma|xpath].*") diff --git a/contrib/ctest/tests/plugins-ecma.ctest b/contrib/ctest/tests/plugins-ecma.ctest index e9c2566..288aac0 100644 --- a/contrib/ctest/tests/plugins-ecma.ctest +++ b/contrib/ctest/tests/plugins-ecma.ctest @@ -1,4 +1,4 @@ set(CTEST_BUILD_OPTIONS "-DBUILD_AS_PLUGINS=ON -DENABLE_GCOV:BOOL=ON") -set(CTEST_BUILD_NAME "${CTEST_BUILD_NAME} - plugins") +set(CTEST_BUILD_NAME "${CMAKE_SYSTEM} - plugins") set(USCXML_INCLUDE_LABEL_REGEX ".*ecma.*") set(USCXML_EXCLUDE_LABEL_REGEX "") diff --git a/contrib/ctest/tests/xpath.ctest b/contrib/ctest/tests/xpath.ctest index 5e0e1dc..ca43fbe 100644 --- a/contrib/ctest/tests/xpath.ctest +++ b/contrib/ctest/tests/xpath.ctest @@ -1,4 +1,4 @@ set(CTEST_BUILD_OPTIONS "-DRUN_W3C_XPATH_TESTS:BOOL=ON -DENABLE_GCOV:BOOL=ON") -set(CTEST_BUILD_NAME "${CTEST_BUILD_NAME} - xpath") +set(CTEST_BUILD_NAME "${CMAKE_SYSTEM} - xpath") set(USCXML_INCLUDE_LABEL_REGEX ".*xpath.*") set(USCXML_EXCLUDE_LABEL_REGEX "") diff --git a/docs/BUILDING.md b/docs/BUILDING.md index 3db0be2..6610665 100644 --- a/docs/BUILDING.md +++ b/docs/BUILDING.md @@ -1,9 +1,30 @@ # Building from Source + + +**Table of Contents** + +- [General](#general) +- [Build Dependencies](#build-dependencies) +- [Platform Notes](#platform-notes) + - [Mac OSX](#mac-osx) + - [Linux](#linux) + - [Windows](#windows) + - [iOS](#ios) +- [Language Bindings](#language-bindings) + - [Java](#java) + - [CSharp](#csharp) + - [Important Note for Windows](#important-note-for-windows) +- [About 32/64Bit Support](#about-3264bit-support) + + + +## General + The source code is built using CMake, the process of building uscxml is essentially the same on every platform: -1. Read the [Platform Notes](#platform-notes) below to prepare your system. +1. Read the [Platform Notes](#platforn-notes) below to prepare your system. 2. Checkout uscxml into a convenient directory: git clone git://github.com/tklab-tud/uscxml.git @@ -28,7 +49,7 @@ project generator. Note: You cannot build the language bindings with the Visual Studio project as it croaks when calling SWIG, just have another build directory with the "NMake Makefiles" project generator. -# Build Dependencies +## Build Dependencies Overview of the uscxml dependencies. See the [Platform Notes](#platform-notes) for details. @@ -110,15 +131,15 @@ your own. Windows - Visual Studio 10
required + Visual Studio 10
required v10 pro works As a student, you can get your version through MSAA. -# Platform Notes +## Platform Notes -This section will detail the preparation of the respective platforms to ultimately compile uscxml. +The following sections will detail the preparation of the respective platforms to ultimately compile uscxml. ## Mac OSX @@ -182,7 +203,7 @@ This would be all distributions based on Redhat, e.g. Fedora. # uscxml required dependencies $ sudo yum install xml2-devel libcurl-devel -#### Fedora 20 +### Fedora 20 Here is a complete walk-through to get uscxml running on Fedora 20, starting with the net installer. @@ -271,6 +292,31 @@ with MinGW but you would have to build all the dependent libraries as well. Note: We do no provide prebuilt dependencies for MSVC18.x (Visual Studio 2012 / 2013). You can still use the bindings for C#, but not the native C++ libraries. +## iOS + +We provide prebuilts and CMake toolchain files for iOS and the iOS simulator. The easiest way to get iOS binaries is +to run: + + $ pwd + + $ ./contrib/build-scripts/build-uscxml-ios.sh + +This will build uSCXML with the latest iOS SDK that is installed on your system. If you prefer an older SDK, you can +export IOS_SDK_VERSION=6.1 but you have to make sure it's actually installed. Have a look at the build +script and the toolchain files at contrib/cmake/CrossCompile-* if you run into issues. + +The build script above will build a universal binary for simulator and device, both in release and debug configuration. +If you just want a specific configuration for e.g. the simulator, you can invoke CMake yourself: + + $ pwd + + $ mkdir build/iossim && cd build/iossim + $ cmake -DCMAKE_TOOLCHAIN_FILE=../../contrib/cmake/CrossCompile-iOS-Sim.cmake ../.. + $ make -j4 + +Note: We did not compile the prebuilts for iOS with 64Bit yet. As such, you will not get binaries build for +arm64. The main culprit is, again, curl which assumes the size of an int to be the same as at its configure time. + ## Language Bindings In order to build any language bindings, you will need to have SWIG and the development kit of your target language -- cgit v0.12