THRIFT-3424 Add CMake android build option
Client: Build
Patch: Nobuaki Sukegawa

This closes #696
diff --git a/build/cmake/DefineOptions.cmake b/build/cmake/DefineOptions.cmake
index 0aad240..8f7659e 100644
--- a/build/cmake/DefineOptions.cmake
+++ b/build/cmake/DefineOptions.cmake
@@ -20,11 +20,17 @@
 
 include(CMakeDependentOption)
 
+set(THRIFT_COMPILER "" CACHE FILEPATH "External Thrift compiler to use during build")
+
 # Additional components
 option(BUILD_COMPILER "Build Thrift compiler" ON)
-option(BUILD_TESTING "Build with unit tests" ON)
-option(BUILD_EXAMPLES "Build examples" ON)
-option(BUILD_TUTORIALS "Build Thrift tutorials" ON)
+
+if(BUILD_COMPILER OR EXISTS ${THRIFT_COMPILER})
+    set(HAVE_COMPILER ON)
+endif()
+CMAKE_DEPENDENT_OPTION(BUILD_TESTING "Build with unit tests" ON "HAVE_COMPILER" OFF)
+CMAKE_DEPENDENT_OPTION(BUILD_EXAMPLES "Build examples" ON "HAVE_COMPILER" OFF)
+CMAKE_DEPENDENT_OPTION(BUILD_TUTORIALS "Build Thrift tutorials" ON "HAVE_COMPILER" OFF)
 option(BUILD_LIBRARIES "Build Thrift libraries" ON)
 
 # Libraries to build
@@ -74,10 +80,16 @@
                        "BUILD_LIBRARIES;WITH_C_GLIB;GLIB_FOUND" OFF)
 # Java
 option(WITH_JAVA "Build Java Thrift library" ON)
-find_package(Java QUIET)
-find_package(Ant QUIET)
-CMAKE_DEPENDENT_OPTION(BUILD_JAVA "Build Java library" ON
-                       "BUILD_LIBRARIES;WITH_JAVA;JAVA_FOUND;ANT_FOUND" OFF)
+if(ANDROID)
+    find_package(Gradle QUIET)
+    CMAKE_DEPENDENT_OPTION(BUILD_JAVA "Build Java library" ON
+                           "BUILD_LIBRARIES;WITH_JAVA;GRADLE_FOUND" OFF)
+else()
+    find_package(Java REQUIRED)
+    find_package(Ant QUIET)
+    CMAKE_DEPENDENT_OPTION(BUILD_JAVA "Build Java library" ON
+                           "BUILD_LIBRARIES;WITH_JAVA;JAVA_FOUND;ANT_FOUND" OFF)
+endif()
 
 # Python
 option(WITH_PYTHON "Build Python Thrift library" ON)
@@ -120,7 +132,9 @@
 message(STATUS "Build configuration Summary")
 message(STATUS "  Build Thrift compiler:              ${BUILD_COMPILER}")
 message(STATUS "  Build with unit tests:              ${BUILD_TESTING}")
+MESSAGE_DEP(HAVE_COMPILER "Disabled because BUILD_THRIFT=OFF and no valid THRIFT_COMPILER is given")
 message(STATUS "  Build examples:                     ${BUILD_EXAMPLES}")
+MESSAGE_DEP(HAVE_COMPILER "Disabled because BUILD_THRIFT=OFF and no valid THRIFT_COMPILER is given")
 message(STATUS "  Build Thrift libraries:             ${BUILD_LIBRARIES}")
 message(STATUS " Language libraries:")
 message(STATUS "  Build C++ library:                  ${BUILD_CPP}")
@@ -131,8 +145,12 @@
 MESSAGE_DEP(GLIB_FOUND "GLib missing")
 message(STATUS "  Build Java library:                 ${BUILD_JAVA}")
 MESSAGE_DEP(WITH_JAVA "Disabled by via WITH_JAVA=OFF")
-MESSAGE_DEP(JAVA_FOUND "Java Runtime missing")
-MESSAGE_DEP(ANT_FOUND "Ant missing")
+if(ANDROID)
+    MESSAGE_DEP(GRADLE_FOUND "Gradle missing")
+else()
+    MESSAGE_DEP(JAVA_FOUND "Java Runtime missing")
+    MESSAGE_DEP(ANT_FOUND "Ant missing")
+endif()
 message(STATUS "  Build Python library:               ${BUILD_PYTHON}")
 MESSAGE_DEP(WITH_PYTHON "Disabled by via WITH_PYTHON=OFF")
 MESSAGE_DEP(PYTHONLIBS_FOUND "Python libraries missing")