From 0d72451a054ea1e6d2b479b8a59d864317236fdf Mon Sep 17 00:00:00 2001 From: Pascal Bach Date: Fri, 19 Sep 2014 12:57:20 +0200 Subject: Help: Add Cross Compiling subsections in cmake-toolchains.7 manual Organize the "Cross Compiling" section into subsections by platform. This will make it easier to add more subsections for more platforms. --- Help/manual/cmake-toolchains.7.rst | 44 ++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/Help/manual/cmake-toolchains.7.rst b/Help/manual/cmake-toolchains.7.rst index f36a43c..bb96da3 100644 --- a/Help/manual/cmake-toolchains.7.rst +++ b/Help/manual/cmake-toolchains.7.rst @@ -97,12 +97,20 @@ Cross Compiling If :manual:`cmake(1)` is invoked with the command line parameter ``-DCMAKE_TOOLCHAIN_FILE=path/to/file``, the file will be loaded early to set -values for the compilers. A typical cross-compiling toolchain has content such +values for the compilers. +The :variable:`CMAKE_CROSSCOMPILING` variable is set to true when CMake is +cross-compiling. + +Cross Compiling for Linux +------------------------- + +A typical cross-compiling toolchain for Linux has content such as: .. code-block:: cmake set(CMAKE_SYSTEM_NAME Linux) + set(CMAKE_SYSTEM_PROCESSOR arm) set(CMAKE_SYSROOT /home/devel/rasp-pi-rootfs) set(CMAKE_STAGING_PREFIX /home/devel/stage) @@ -118,6 +126,9 @@ as: The :variable:`CMAKE_SYSTEM_NAME` is the CMake-identifier of the target platform to build for. +The :variable:`CMAKE_SYSTEM_PROCESSOR` is the CMake-identifier of the target architecture +to build for. + The :variable:`CMAKE_SYSROOT` is optional, and may be specified if a sysroot is available. @@ -139,13 +150,17 @@ target system prefixes, whereas executables which must be run as part of the bui should be found only on the host and not on the target. This is the purpose of the ``CMAKE_FIND_ROOT_PATH_MODE_*`` variables. -Some compilers are inherently cross compilers, such as Clang and the QNX QCC -compiler. The :variable:`CMAKE__COMPILER_TARGET` can be set to pass a +Cross Compiling using Clang +--------------------------- + +Some compilers such as Clang are inherently cross compilers. +The :variable:`CMAKE__COMPILER_TARGET` can be set to pass a value to those supported compilers when compiling: .. code-block:: cmake set(CMAKE_SYSTEM_NAME Linux) + set(CMAKE_SYSTEM_PROCESSOR arm) set(triple arm-linux-gnueabihf) @@ -154,7 +169,18 @@ value to those supported compilers when compiling: set(CMAKE_CXX_COMPILER clang++) set(CMAKE_CXX_COMPILER_TARGET ${triple}) -Or, for QCC: +Similarly, some compilers do not ship their own supplementary utilities +such as linkers, but provide a way to specify the location of the external +toolchain which will be used by the compiler driver. The +:variable:`CMAKE__COMPILER_EXTERNAL_TOOLCHAIN` variable can be set in a +toolchain file to pass the path to the compiler driver. + +Cross Compiling for QNX +----------------------- + +As the Clang compiler the QNX QCC compile is inherently a cross compiler. +And the :variable:`CMAKE__COMPILER_TARGET` can be set to pass a +value to those supported compilers when compiling: .. code-block:: cmake @@ -166,13 +192,3 @@ Or, for QCC: set(CMAKE_C_COMPILER_TARGET ${arch}) set(CMAKE_CXX_COMPILER QCC) set(CMAKE_CXX_COMPILER_TARGET ${arch}) - - -Similarly, some compilers do not ship their own supplementary utilities -such as linkers, but provide a way to specify the location of the external -toolchain which will be used by the compiler driver. The -:variable:`CMAKE__COMPILER_EXTERNAL_TOOLCHAIN` variable can be set in a -toolchain file to pass the path to the compiler driver. - -The :variable:`CMAKE_CROSSCOMPILING` variable is set to true when CMake is -cross-compiling. -- cgit v0.12 From db54d872874407c81690794e274cb4b88c64872b Mon Sep 17 00:00:00 2001 From: Pascal Bach Date: Fri, 19 Sep 2014 12:58:02 +0200 Subject: Help: Add Windows CE cross-compiling to cmake-toolchains.7 manual --- Help/manual/cmake-toolchains.7.rst | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/Help/manual/cmake-toolchains.7.rst b/Help/manual/cmake-toolchains.7.rst index bb96da3..858499a 100644 --- a/Help/manual/cmake-toolchains.7.rst +++ b/Help/manual/cmake-toolchains.7.rst @@ -192,3 +192,29 @@ value to those supported compilers when compiling: set(CMAKE_C_COMPILER_TARGET ${arch}) set(CMAKE_CXX_COMPILER QCC) set(CMAKE_CXX_COMPILER_TARGET ${arch}) + +Cross Compiling for Windows CE +------------------------------ + +Cross compiling for Windows CE requires the corresponding SDK being +installed on your system. These SDKs are usually installed under +``C:/Program Files (x86)/Windows CE Tools/SDKs``. + +A toolchain file to configure a Visual Studio generator for +Windows CE may look like this: + +.. code-block:: cmake + + set(CMAKE_SYSTEM_NAME WindowsCE) + + set(CMAKE_SYSTEM_VERSION 8.0) + set(CMAKE_SYSTEM_PROCESSOR arm) + + set(CMAKE_GENERATOR_TOOLSET CE800) # Can be omitted for 8.0 + set(CMAKE_GENERATOR_PLATFORM SDK_AM335X_SK_WEC2013_V310) + +The :variable:`CMAKE_GENERATOR_PLATFORM` tells the generator which SDK to use. +Further :variable:`CMAKE_SYSTEM_VERSION` tells the generator what version of +Windows CE to use. Currently version 8.0 (Windows Embedded Compact 2013) is +supported out of the box. Other versions may require one to set +:variable:`CMAKE_GENERATOR_TOOLSET` to the correct value. -- cgit v0.12 From 2702216637cea02e9aa3fd63ddf0287d68cfe9ca Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 19 Sep 2014 13:22:22 -0400 Subject: Help: Add Windows Phone/Store cross-compiling to cmake-toolchains.7 Show simple example toolchain files for each. --- Help/manual/cmake-toolchains.7.rst | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Help/manual/cmake-toolchains.7.rst b/Help/manual/cmake-toolchains.7.rst index 858499a..1621b5f 100644 --- a/Help/manual/cmake-toolchains.7.rst +++ b/Help/manual/cmake-toolchains.7.rst @@ -218,3 +218,25 @@ Further :variable:`CMAKE_SYSTEM_VERSION` tells the generator what version of Windows CE to use. Currently version 8.0 (Windows Embedded Compact 2013) is supported out of the box. Other versions may require one to set :variable:`CMAKE_GENERATOR_TOOLSET` to the correct value. + +Cross Compiling for Windows Phone +--------------------------------- + +A toolchain file to configure a Visual Studio generator for +Windows Phone may look like this: + +.. code-block:: cmake + + set(CMAKE_SYSTEM_NAME WindowsPhone) + set(CMAKE_SYSTEM_VERSION 8.1) + +Cross Compiling for Windows Store +--------------------------------- + +A toolchain file to configure a Visual Studio generator for +Windows Store may look like this: + +.. code-block:: cmake + + set(CMAKE_SYSTEM_NAME WindowsStore) + set(CMAKE_SYSTEM_VERSION 8.1) -- cgit v0.12