summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-07-04 13:00:48 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2014-07-04 13:00:48 (GMT)
commit791c99ed223c8491c9da2c9863da07cc84122514 (patch)
tree69154cf6e91fc8e6dc1993fa928a957803ede9ab
parentf0e9ecf5bc708f57270f8b7e3abb50538224c3ef (diff)
downloaduscxml-791c99ed223c8491c9da2c9863da07cc84122514.zip
uscxml-791c99ed223c8491c9da2c9863da07cc84122514.tar.gz
uscxml-791c99ed223c8491c9da2c9863da07cc84122514.tar.bz2
Polished iOS builds and docs
-rw-r--r--CMakeLists.txt9
-rw-r--r--README.md49
-rwxr-xr-xcontrib/build-scripts/build-uscxml-ios.sh35
-rw-r--r--contrib/cmake/CrossCompile-iOS-Sim.cmake18
-rw-r--r--contrib/cmake/CrossCompile-iOS.cmake31
-rw-r--r--contrib/ctest/hosts/default.nmake.ctest8
-rw-r--r--contrib/ctest/tests/ecma.ctest2
-rw-r--r--contrib/ctest/tests/general.ctest2
-rw-r--r--contrib/ctest/tests/plugins-ecma.ctest2
-rw-r--r--contrib/ctest/tests/xpath.ctest2
-rw-r--r--docs/BUILDING.md58
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)
+<!-- START doctoc generated TOC please keep comment here to allow auto update -->
+<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
+**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)
+
+<!-- END doctoc generated TOC please keep comment here to allow auto update -->
+
+## 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 <b>Linux</b>, <b>Windows</b> and <b>MacOSX</b>, each 32- as well as 64Bits as well as <b>iOS</b>.
@@ -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:
</tr>
</table>
-## 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 <tt>embedding</tt> 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 <tt>embedding</tt> 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 <tt>embedding</tt> 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
+<!-- START doctoc generated TOC please keep comment here to allow auto update -->
+<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
+**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)
+
+<!-- END doctoc generated TOC please keep comment here to allow auto update -->
+
+## General
+
The source code is built using CMake, the process of building uscxml is
essentially the same on every platform:
-1. Read the <b>[Platform Notes](#platform-notes)</b> below to prepare your system.
+1. Read the <b>[Platform Notes](#platforn-notes)</b> below to prepare your system.
2. Checkout uscxml into a convenient directory:
<tt>git clone git://github.com/tklab-tud/uscxml.git</tt>
@@ -28,7 +49,7 @@ project generator.
<b>Note:</b> 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.
<tr>
<td rowspan="1"><b>Windows</b></td>
- <td bgcolor="#ffffdd"><a href="http://www.microsoft.com/visualstudio/en-us">Visual&nbsp;Studio&nbsp;10</a><br />required</td>
+ <td<a href="http://www.microsoft.com/visualstudio/en-us">Visual&nbsp;Studio&nbsp;10</a><br />required</td>
<td>v10 pro works</td>
<td>As a student, you can get your version through MSAA.</td></tr>
</tr>
</table>
-# 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.
<b>Note:</b> 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
+ <USCXML_SRC>
+ $ ./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
+<tt>export IOS_SDK_VERSION=6.1</tt> but you have to make sure it's actually installed. Have a look at the build
+script and the toolchain files at <tt>contrib/cmake/CrossCompile-*</tt> 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
+ <USCXML_SRC>
+ $ mkdir build/iossim && cd build/iossim
+ $ cmake -DCMAKE_TOOLCHAIN_FILE=../../contrib/cmake/CrossCompile-iOS-Sim.cmake ../..
+ $ make -j4
+
+<b>Note</b>: 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