# 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) - [Raspberry Pi](#raspberry-pi) - [Language Bindings](#language-bindings) - [Java](#java) - [CSharp](#csharp) - [Important Note for Windows](#important-note-for-windows) - [Optional Functionality](#optional-functionality) - [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](#platforn-notes) below to prepare your system. 2. Checkout uscxml into a convenient directory: git clone git://github.com/tklab-tud/uscxml.git 3. Create a new directory for an *out-of-source* build. I usually create sub-directories in <USCXML_SRC>/build/. 4. Run cmake (or ccmake / CMake-GUI) to create the files required by your actual build-system. 5. Use your actual build-system or development environment to build uscxml. 6. Optionally build the [language bindings](#language-bindings) to embed the SCXML interpreter in another language. 7. Read the SCXML draft and have a look at the tests to get started. If you want to build for another IDE or build-system, just create a new *out-of-source* build directory and start over with CMake. To get an idea of supported IDEs and build-environments on your platform, type cmake --help or run the CMake-GUI and look for the *Generators* section at the end of the output. Default on Unices is Makefiles. Note: If you plan to use Eclipse CDT, you cannot have a build directory anywhere under the source directory - just create the build directory anywhere else. This only applies to the Eclipse CDT 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 Overview of the uscxml dependencies. See the [Platform Notes](#platform-notes) for details. Note: We download pre-compiled versions of most dependencies at CMake configure-time. If you want to provide you own libraries, remove them from <USCXML_SRC>/contrib/prebuilt/ and provide your own.
Platform | Dependency | Version | Comment |
---|---|---|---|
Everyone | CMake required |
>= 2.8.6 | The build-system used for uscxml. |
SWIG optional |
>= 2.0.6 | Generates language bindings to embed uSCXML in other target languages. | |
libevent pre-compiled |
>= 2.1.x | Event queues with callbacks and the HTTP server. | |
curl pre-compiled / required |
>= 7.29.0 | URL downloads. | |
v8 pre-compiled |
svn checkout | ECMAScript datamodel implementation. | |
SWI Prolog pre-compiled for unices |
>= 6.3.x | Prolog datamodel implementation. | |
glog pre-compiled |
>= 0.3.3 | Logging library. | |
Arabica pre-compiled |
>= git checkout | XML DOM / XPath / XML Events. | |
SQLite optional |
>= 3.7.15.2 | Persistence and sqlite invoker. | |
OpenSceneGraph optional |
>= 3.1.X | 3D invokers (scenegraph, osgconvert). | |
Doxygen recommended |
Used by make docs to generate documentation from source comments. | ||
Mac OSX | XCode required |
4.2.1 works | Apples SDK with all the toolchains. |
MacPorts recommended |
>= 2.0.3 | Build system for a wide selection of open-source packages. | |
libxml2 pre-installed |
>= 2.6.16 | Actual XML parser used by Arabica. | |
Linux | libxml2 required |
>= 2.6.16 | Actual XML parser used by Arabica. |
Windows | Visual Studio 10 required |
v10 pro works | As a student, you can get your version through MSAA. |