|
| 1 | +cmake_minimum_required (VERSION 2.8.12) |
| 2 | + |
| 3 | +include (CMakeParseArguments) |
| 4 | +include (Folders) |
| 5 | + |
| 6 | +find_package (JavaBuildTools) |
| 7 | + |
| 8 | +# This function intentionally doesn't accept or configure SOURCES. cmake should |
| 9 | +# call gradle unconditionally, and gradle will take care of up-to-dateness. |
| 10 | +function (add_gradle_build target) |
| 11 | + set (oneValueArgs GRADLE_TARGET) |
| 12 | + set (multiValueArgs DEPENDS) |
| 13 | + cmake_parse_arguments (arg "${flagArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
| 14 | + |
| 15 | + if (NOT arg_GRADLE_TARGET) |
| 16 | + set (arg_GRADLE_TARGET build) |
| 17 | + endif() |
| 18 | + |
| 19 | + add_custom_command ( |
| 20 | + DEPENDS gbc |
| 21 | + COMMAND |
| 22 | + ${GRADLE_EXECUTABLE} --console plain ${arg_GRADLE_TARGET} |
| 23 | + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
| 24 | + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/build/java/${target}) |
| 25 | + |
| 26 | + add_custom_target ("${target}" |
| 27 | + DEPENDS gbc ${arg_DEPENDS} |
| 28 | + ${CMAKE_CURRENT_BINARY_DIR}/build/java/${target}) |
| 29 | + |
| 30 | + add_target_to_folder("${target}") |
| 31 | + add_dependencies(java "${target}") |
| 32 | +endfunction() |
| 33 | + |
| 34 | +function (add_maven_install target) |
| 35 | + set (oneValueArgs AFTER_BUILD JAR) |
| 36 | + cmake_parse_arguments (arg "${flagArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
| 37 | + |
| 38 | + # The path given to -DpomFile is hard-coded to match the output path of |
| 39 | + # gradle's maven plugin. |
| 40 | + add_custom_command ( |
| 41 | + COMMAND |
| 42 | + ${MAVEN_EXECUTABLE} |
| 43 | + install:install-file |
| 44 | + -DpomFile=build/poms/pom-default.xml |
| 45 | + -Dfile=build/libs/${arg_JAR} |
| 46 | + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
| 47 | + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/build/java/${target}) |
| 48 | + |
| 49 | + add_custom_target ("${target}" |
| 50 | + DEPENDS ${arg_AFTER_BUILD} |
| 51 | + ${CMAKE_CURRENT_BINARY_DIR}/build/java/${target}) |
| 52 | + |
| 53 | + add_target_to_folder("${target}") |
| 54 | + add_dependencies(java "${target}") |
| 55 | +endfunction() |
0 commit comments