0028135: Configuration - adopt building script for using built-in Android cross-compi...
authorski <ski@opencascade.com>
Wed, 21 Dec 2016 10:41:04 +0000 (13:41 +0300)
committerapn <apn@opencascade.com>
Thu, 29 Dec 2016 11:23:20 +0000 (14:23 +0300)
Added toolchain file for using built-in Android cross-compiling support in CMake 3.7

Added variable CMAKE_ANDROID_STL_TYPE for Android platform build via CMake.

Updated documentation about building of occt for UWP and Android via CMake.

Eliminated CMake warning CMP0054 for Android platform build.

adm/cmake/occt_toolkit.cmake
adm/templates/android.toolchain.config.cmake [new file with mode: 0644]
dox/dev_guides/building/android/android.md
dox/dev_guides/building/android/images/android_image001.png
dox/dev_guides/building/android/images/android_image002.png
dox/dev_guides/building/android/images/android_image003.png
dox/dev_guides/building/android/images/android_image004.png
dox/dev_guides/building/android/images/android_image005.png
dox/dev_guides/building/android/images/android_image006.png
dox/dev_guides/building/cmake/cmake.md

index 14acf42..b2d6205 100644 (file)
@@ -219,7 +219,7 @@ foreach (USED_ITEM ${USED_EXTERNLIB_AND_TOOLKITS})
         message (STATUS "Info: ${USED_ITEM} from ${PROJECT_NAME} skipped due to it is empty")
       else() # get CSF_ value
         set (CURRENT_CSF ${${USED_ITEM}})
-        if (NOT "${CURRENT_CSF}" STREQUAL "")
+        if (NOT "x${CURRENT_CSF}" STREQUAL "x")
           # prepare a list from a string with whitespaces
           separate_arguments (CURRENT_CSF)
           list (APPEND USED_EXTERNAL_LIBS_BY_CURRENT_PROJECT ${CURRENT_CSF})
diff --git a/adm/templates/android.toolchain.config.cmake b/adm/templates/android.toolchain.config.cmake
new file mode 100644 (file)
index 0000000..3c5c70d
--- /dev/null
@@ -0,0 +1,8 @@
+# A toolchain file to configure a Makefile Generators or the Ninja generator to target Android for cross-compiling.
+# Set CMAKE_ANDROID_NDK variable equal to your Android NDK path.
+
+set (CMAKE_SYSTEM_NAME       Android)
+set (CMAKE_SYSTEM_VERSION    15) # API level
+set (CMAKE_ANDROID_ARCH_ABI  armeabi-v7a)
+set (CMAKE_ANDROID_NDK       "")
+set (CMAKE_ANDROID_STL_TYPE  gnustl_shared)
index 7ae6b4e..cde0363 100644 (file)
@@ -10,32 +10,40 @@ The steps on Windows and Ubuntu are similar. There is the only one difference: m
 on Windows and native GNU make on Ubuntu.
 
 Required tools (download and install if it is required):
-  - CMake v3.0+ http://www.cmake.org/cmake/resources/software.html
-  - Cross-compilation toolchain for CMake https://github.com/taka-no-me/android-cmake
+  - CMake v3.7+ http://www.cmake.org/cmake/resources/software.html
   - Android NDK rev.10+ https://developer.android.com/tools/sdk/ndk/index.html
   - GNU Make: MinGW v4.82+ for Windows (http://sourceforge.net/projects/mingw/files/), GNU Make 4.0 for Ubuntu. 
-  
-## Generation of makefiles
+
+## Prerequisites
+
+In toolchain file <i>$CASROOT/adm/templates/android.toolchain.config.cmake</i>:
+
+  - Set CMAKE_ANDROID_NDK variable equal to your Android NDK path.
+  - Set CMAKE_ANDROID_STL_TYPE variable to specify which C++ standard library to use.
+
+The default value of CMAKE_ANDROID_STL_TYPE is <i>gnustl_shared</i> (GNU libstdc++ Shared)
+
+@figure{/dev_guides/building/android/images/android_image001.png}
+
+## Generation of makefiles using CMake GUI tool
 Run GUI tool provided by CMake: cmake-gui
 
 ### Tools configuration
   - Specify the root folder of OCCT (<i>$CASROOT</i>, which contains *CMakelists.txt* file) by clicking **Browse Source**.
   - Specify the location (build folder) for Cmake generated project files by clicking **Browse Build**.
 
-@figure{/dev_guides/building/android/images/android_image001.png}
+@figure{/dev_guides/building/android/images/android_image002.png}
 
 Click **Configure** button. It opens the window with a drop-down list of generators supported by CMake project.
 
-Select "MinGW MakeFiles" item from the list
+Select "MinGW Makefiles" item from the list
   - Choose "Specify toolchain file for cross-compiling"
   - Click "Next"
-@figure{/dev_guides/building/android/images/android_image002.png}
 
-  - Specify a toolchain file at the next dialog by android.toolchain.cmake . It is contained by cross-compilation toolchain for CMake
-  - Click "Finish"
 @figure{/dev_guides/building/android/images/android_image003.png}
 
-If ANDROID_NDK environment variable is not defined in current OS, add cache entry ANDROID_NDK (entry type is PATH) -- path to the NDK folder ("Add Entry" button)
+  - Specify a toolchain file at the next dialog by <i>android.toolchain.config.cmake</i> . It is contained by cross-compilation toolchain for CMake
+  - Click "Finish"
 @figure{/dev_guides/building/android/images/android_image004.png}
 
 If on Windows the message is appeared: "CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles"
@@ -46,18 +54,19 @@ specify **CMAKE_MAKE_PROGRAM** to mingw32-make executable.
 ### OCCT Configuration
 
 How to configure OCCT, see "OCCT Configuration" section of @ref occt_dev_guides__building_cmake "Building with CMake"
-taking into account the specific configuration variables for android:
-  - ANDROID_ABI = armeabi-v7a
-  - ANDROID_NATIVE_API_LEVEL = 15
-  - ANDROID_NDK_LAYOUT is equal to CMAKE_BUILD_TYPE variable
-  - **BUILD_MODULE_Draw = OFF**
-
-@figure{/dev_guides/building/android/images/android_image006.png}
 
 ### Generation of makefiles
 
 Click **Generate** button and wait until the generation process is finished. 
-Then makefiles will appear in the build folder (e.g. <i> D:/tmp/occt-android </i>).
+Then makefiles will appear in the build folder (e.g. <i> D:/occt/build-android </i>).
+
+## Generation of makefiles using CMake from the command line
+
+Alternatively one may specify the values without a toolchain file:
+
+> cmake -G "MinGW Makefiles" -DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK=D:/DevTools/android-ndk-r13b -DCMAKE_ANDROID_STL_TYPE=gnustl_shared -DCMAKE_SYSTEM_VERSION=15 -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a -DCMAKE_MAKE_PROGRAM=D:/DevTools/MinGW/bin/mingw32-make.exe -D3RDPARTY_DIR=D:/occt-3rdparty D:/occt
+
+@figure{/dev_guides/building/android/images/android_image006.png}
 
 ## Building makefiles of OCCT
 
index b5c047e..a4460f3 100644 (file)
Binary files a/dox/dev_guides/building/android/images/android_image001.png and b/dox/dev_guides/building/android/images/android_image001.png differ
index 64d002d..3a20979 100644 (file)
Binary files a/dox/dev_guides/building/android/images/android_image002.png and b/dox/dev_guides/building/android/images/android_image002.png differ
index 782b2d8..52c4f2e 100644 (file)
Binary files a/dox/dev_guides/building/android/images/android_image003.png and b/dox/dev_guides/building/android/images/android_image003.png differ
index 005ac50..b01d015 100644 (file)
Binary files a/dox/dev_guides/building/android/images/android_image004.png and b/dox/dev_guides/building/android/images/android_image004.png differ
index 1add49f..e65a7b3 100644 (file)
Binary files a/dox/dev_guides/building/android/images/android_image005.png and b/dox/dev_guides/building/android/images/android_image005.png differ
index d9d9ff4..97f5511 100644 (file)
Binary files a/dox/dev_guides/building/android/images/android_image006.png and b/dox/dev_guides/building/android/images/android_image006.png differ
index eb0456a..5b334f2 100644 (file)
@@ -60,7 +60,9 @@ Once the source and build directories are selected, "Configure" button should be
 
 @figure{/dev_guides/building/cmake/images/cmake_image002.png}
 
-To build OCCT for Universal Windows Platform (UWP) specify the path to toolchain file for cross-compiling <i>d:/occt/adm/templates/uwp.toolchain.config.cmake</i>.
+To build OCCT for **Universal Windows Platform (UWP)** specify the path to toolchain file for cross-compiling <i>d:/occt/adm/templates/uwp.toolchain.config.cmake</i>.
+
+Alternatively, if you are using CMake from the command line add options -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0 .
 
 **Note**: Universal Windows Platform (UWP) is supported only on "Visual Studio 14 2015". File <i>d:/occt/samples/xaml/ReadMe.md</i> describes the building procedure of XAML (UWP) sample.