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

This closes #696
diff --git a/lib/java/CMakeLists.txt b/lib/java/CMakeLists.txt
index ba11f34..2014f5c 100644
--- a/lib/java/CMakeLists.txt
+++ b/lib/java/CMakeLists.txt
@@ -17,32 +17,50 @@
 # under the License.
 #
 
-if(IS_ABSOLUTE "${LIB_INSTALL_DIR}")
-    set(JAVA_INSTALL_DIR "${LIB_INSTALL_DIR}/java")
-else()
-    set(JAVA_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/java")
-endif()
+file(GLOB java_sources src/**/*.java)
 
-if(IS_ABSOLUTE "${DOC_INSTALL_DIR}")
-    set(JAVA_DOC_INSTALL_DIR "${DOC_INSTALL_DIR}/java")
-else()
-    set(JAVA_DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${DOC_INSTALL_DIR}/java")
-endif()
+if(ANDROID)
+    set(android_sources
+        android/build.gradle
+        android/settings.gradle
+        android/src/main/AndroidManifest.xml
+    )
+    set(THRIFT_AAR outputs/aar/thrift-debug.aar outputs/aar/thrift-release.aar)
+    add_custom_command(
+        OUTPUT ${THRIFT_AAR}
+        COMMAND ${GRADLE_EXECUTABLE} -p${CMAKE_CURRENT_SOURCE_DIR}/android -PbuildDir=${CMAKE_CURRENT_BINARY_DIR} assemble
+        DEPENDS ${java_sources} ${android_sources})
+    add_custom_target(thrift_aar ALL DEPENDS ${THRIFT_AAR})
 
-add_custom_target(ant_build ALL
-    COMMAND ${Ant_EXECUTABLE} ${ANT_FLAGS} -Dbuild.dir=${CMAKE_CURRENT_BINARY_DIR} -Dworking.dir=${work_dir} -f build.xml
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-    COMMENT "Building Java library using Ant"
-)
+else(ANDROID)
 
-# Hook the ant install task into CMake install
-install(CODE "execute_process(
-    COMMAND ${Ant_EXECUTABLE} ${ANT_FLAGS} install
-    -Dbuild.dir=${CMAKE_CURRENT_BINARY_DIR} -Dworking.dir=${work_dir}
-    -Dinstall.path=${JAVA_INSTALL_DIR} -Dinstall.javadoc.path=${JAVA_DOC_INSTALL_DIR} -f build.xml
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-)")
+    if(IS_ABSOLUTE "${LIB_INSTALL_DIR}")
+        set(JAVA_INSTALL_DIR "${LIB_INSTALL_DIR}/java")
+    else()
+        set(JAVA_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/java")
+    endif()
 
-if(BUILD_TESTING)
-    #add_subdirectory(test)
-endif()
+    if(IS_ABSOLUTE "${DOC_INSTALL_DIR}")
+        set(JAVA_DOC_INSTALL_DIR "${DOC_INSTALL_DIR}/java")
+    else()
+        set(JAVA_DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${DOC_INSTALL_DIR}/java")
+    endif()
+
+    add_custom_target(ant_build ALL
+        COMMAND ${Ant_EXECUTABLE} ${ANT_FLAGS} -Dbuild.dir=${CMAKE_CURRENT_BINARY_DIR} -Dworking.dir=${work_dir} -f build.xml
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+        COMMENT "Building Java library using Ant"
+    )
+
+    # Hook the ant install task into CMake install
+    install(CODE "execute_process(
+        COMMAND ${Ant_EXECUTABLE} ${ANT_FLAGS} install
+        -Dbuild.dir=${CMAKE_CURRENT_BINARY_DIR} -Dworking.dir=${work_dir}
+        -Dinstall.path=${JAVA_INSTALL_DIR} -Dinstall.javadoc.path=${JAVA_DOC_INSTALL_DIR} -f build.xml
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    )")
+
+    if(BUILD_TESTING)
+        #add_subdirectory(test)
+    endif()
+endif(ANDROID)