title: What's CMake doing with Ninja in Android 7 build system?
body: <p>From the information I got, in the Android 7 build system : </p>
  
  <ul>
  <li>The Go provides a build support for the Soong.</li>
  <li>The Soong, instead of using make, loads the .bp/.mk files, and outputs .ninja files.</li>
  <li>The Ninja loads the .ninja files and builds the source code.</li>
  </ul>
  
  <p>And I also found in the <a href="https://cmake.org/cmake/help/v3.6/release/3.6.html" rel="nofollow">help page</a> that CMake includes a Ninja generator.</p>
  
  <p>EDIT :</p>
  
  <p>CMake is included in the <a href="https://android.googlesource.com/platform/prebuilts/cmake/linux-x86/" rel="nofollow">platform/prebuilts</a>, but not included in the <a href="https://android.googlesource.com/platform/manifest/+/android-7.0.0_r6" rel="nofollow">Android 7 manifests</a></p>
  
  <p>But I checked the android code again , there being so many CMakeLists.txt and CMake being called in some scripts under /external.</p>
  
  <pre><code>    ./external/clang/CMakeLists.txt:686:  get_cmake_property(variableNames VARIABLES)
      ./external/clang/CMakeLists.txt:711:    ${cmake_3_1_EXCLUDE_FROM_ALL}
      ./external/clang/CMakeLists.txt:725:    ${cmake_3_4_USES_TERMINAL_OPTIONS}
      ./external/clang/CMakeLists.txt:734:    ${cmake_3_4_USES_TERMINAL}
      ./external/clang/CMakeLists.txt:750:      ${cmake_3_4_USES_TERMINAL}
      ./external/clang/runtime/CMakeLists.txt:28:    set(cmake_3_4_USES_TERMINAL_OPTIONS
      ./external/clang/runtime/CMakeLists.txt:49:  get_cmake_property(variableNames VARIABLES)
      ./external/clang/runtime/CMakeLists.txt:78:    ${cmake_3_4_USES_TERMINAL_OPTIONS}
      ./external/dbus/cmake/cross-compile.sh
      ./external/compiler-rt/lib/tsan/check_cmake.sh
      ./external/opencv3/platforms/scripts/cmake_android_mips.sh
      ./external/opencv3/platforms/scripts/cmake_arm_gnueabi_softfp.sh
      ./external/opencv3/platforms/scripts/cmake_carma.sh
      ./external/opencv3/platforms/scripts/cmake_android_x86.sh
      ./external/opencv3/platforms/scripts/cmake_android_arm.sh
      ./external/opencv3/platforms/scripts/cmake_arm_gnueabi_hardfp.sh
      ./external/opencv3/platforms/scripts/cmake_android_service.sh
      ./external/opencv3/samples/android/hello-android/cmake_android.sh
  </code></pre>
  
  <p>Also, CMake exist under folder</p>
  
  <pre><code>    butter@server131:~/code/AOSP/N$ find ./ -name "cmake"
      ./prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot/usr/lib/cmake
      ./prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/sysroot/usr/lib32/cmake
      ./external/dbus/cmake
      ./external/llvm/cmake
      ./external/compiler-rt/cmake
      ./external/deqp/framework/delibs/cmake
      ./external/eigen/cmake
      ./external/eigen/bench/btl/cmake
      ./external/ceres-solver/cmake
      ./external/google-benchmark/cmake
      ./external/libcxx/cmake
      ./external/libcxxabi/cmake
      ./external/opencv3/platforms/ios/cmake
      ./external/opencv3/cmake
      ./external/clang/cmake
      ./external/google-breakpad/src/testing/gtest/cmake
      ./external/libunwind_llvm/cmake
      ./external/pcre/dist/cmake
  </code></pre>
  
  <p>So if the Soong could generate .ninja files , what is CMake's role in the Android 7 build system?   Just an alternative choice or just not fully replaced by the Soong yet? </p>