--- /dev/null
+
+.. _ARM-Linux-cross-compile:
+
+Cross compilation for ARM based Linux systems
+*********************************************
+
+This steps are tested on Ubuntu Linux 12.04, but should work for other Linux distributions.
+I case of other distributions package names and names of cross compilation tools may differ.
+There are several popular EABI versions that are used on ARM platform. This tutorial is
+written for *gnueabi* and *gnueabihf*, but other variants should work with minimal changes.
+
+
+Prerequisites
+=============
+
+ * Host computer with Linux;
+ * Git;
+ * CMake 2.6 or higher;
+ * Cross compilation tools for ARM: gcc, libstc++, etc. Depending on target platform you need
+ to choose *gnueabi* or *gnueabihf* tools.
+ Install command for *gnueabi*:
+
+ .. code-block:: bash
+
+ sudo apt-get install gcc-arm-linux-gnueabi
+
+ Install command for *gnueabihf*:
+
+ .. code-block:: bash
+
+ sudo apt-get install gcc-arm-linux-gnueabihf
+
+ * pkgconfig;
+ * Python 2.6 for host system;
+ * [optional] ffmpeg or libav development packages for armeabi(hf): libavcodec-dev, libavformat-dev, libswscale-dev;
+ * [optional] GTK+2.x or higher, including headers (libgtk2.0-dev) for armeabi(hf);
+ * [optional] libdc1394 2.x;
+ * [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev for armeabi(hf).
+
+
+Getting OpenCV Source Code
+==========================
+
+You can use the latest stable OpenCV version available in *sourceforge* or you can grab the latest
+snapshot from our `Git repository <https://github.com/Itseez/opencv.git>`_.
+
+
+Getting the Latest Stable OpenCV Version
+----------------------------------------
+
+* Go to our `page on Sourceforge <http://sourceforge.net/projects/opencvlibrary>`_;
+
+* Download the source tarball and unpack it.
+
+
+Getting the Cutting-edge OpenCV from the Git Repository
+-------------------------------------------------------
+
+Launch Git client and clone `OpenCV repository <http://github.com/itseez/opencv>`_
+
+In Linux it can be achieved with the following command in Terminal:
+
+.. code-block:: bash
+
+ cd ~/<my_working _directory>
+ git clone https://github.com/Itseez/opencv.git
+
+
+Building OpenCV
+===============
+
+#. Create a build directory, make it current and run the following command:
+
+ .. code-block:: bash
+
+ cmake [<some optional parameters>] -DCMAKE_TOOLCHAIN_FILE=<path to the OpenCV source directory>/platforms/linux/arm-gnueabi.toolchain.cmake <path to the OpenCV source directory>
+
+ Toolchain uses *gnueabihf* EABI convention by default. Add ``-DSOFTFP=ON`` cmake argument to switch on softfp compiler.
+
+ .. code-block:: bash
+
+ cmake [<some optional parameters>] -DSOFTFP=ON -DCMAKE_TOOLCHAIN_FILE=<path to the OpenCV source directory>/platforms/linux/arm-gnueabi.toolchain.cmake <path to the OpenCV source directory>
+
+ For example:
+
+ .. code-block:: bash
+
+ cd ~/opencv/platforms/linux
+ mkdir -p build_hardfp
+ cd build_hardfp
+
+ cmake -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake ../../..
+
+#. Run make in build (<cmake_binary_dir>) directory:
+
+ .. code-block:: bash
+
+ make
+
+.. note::
+
+ Optionally you can strip symbols info from the created library via install/strip make target.
+ This option produces smaller binary (~ twice smaller) but makes further debugging harder.
+
+Enable hardware optimizations
+-----------------------------
+
+Depending on target platfrom architecture different instruction sets can be used. By default
+compiler generates code for armv5l without VFPv3 and NEON extensions. Add ``-DUSE_VFPV3=ON``
+to cmake command line to enable code generation for VFPv3 and ``-DUSE_NEON=ON`` for using
+NEON SIMD extensions.
+
+TBB is supported on multi core ARM SoCs also.
+Add ``-DWITH_TBB=ON`` and ``-DBUILD_TBB=ON`` to enable it. Cmake scripts download TBB sources
+from official project site `<http://threadingbuildingblocks.org/>`_ and build it.
Introduction to OpenCV
-----------------------------------------------------------
-Here you can read tutorials about how to set up your computer to work with the OpenCV library. Additionaly you can find a few very basic sample source code that will let introduce you to the world of the OpenCV.
+Here you can read tutorials about how to set up your computer to work with the OpenCV library.
+Additionally you can find a few very basic sample source code that will let introduce you to the
+world of the OpenCV.
.. include:: ../../definitions/tocDefinitions.rst
.. |Install_iOS| image:: images/opencv_ios.png
:width: 90pt
+* **Embedded Linux**
+
+ .. tabularcolumns:: m{100pt} m{300pt}
+ .. cssclass:: toctableopencv
+
+ =========== ======================================================
+ |Usage_1| **Title:** :ref:`ARM-Linux-cross-compile`
+
+ *Compatibility:* > OpenCV 2.4.4
+
+ *Author:* |Author_AlexS|
+
+ We will learn how to setup OpenCV cross compilation environment for ARM Linux.
+
+ =========== ======================================================
+
+* **Common**
+
.. tabularcolumns:: m{100pt} m{300pt}
.. cssclass:: toctableopencv
\pagebreak
-.. We use a custom table of content format and as the table of content only imforms Sphinx about the hierarchy of the files, no need to show it.
+.. We use a custom table of content format and as the table of content only informs Sphinx about the hierarchy of the files, no need to show it.
.. toctree::
:hidden:
../android_binary_package/O4A_SDK
../android_binary_package/dev_with_OCV_on_Android
../ios_install/ios_install
+ ../crosscompilation/arm_crosscompile_with_cmake
../display_image/display_image
../load_save_image/load_save_image
../how_to_write_a_tutorial/how_to_write_a_tutorial