|
| 1 | +@[if DEVELSPACE]@ |
| 2 | +# location of scripts in develspace |
| 3 | + set(GENJAVA_BIN_DIR "@(CMAKE_CURRENT_SOURCE_DIR)/scripts") |
| 4 | +@[else]@ |
| 5 | + set(GENJAVA_BIN_DIR "${GENJAVA_DIR}/../../../@(CATKIN_PACKAGE_BIN_DESTINATION)") |
| 6 | +@[end if]@ |
| 7 | + |
| 8 | +set(GENJAVA_BIN ${GENJAVA_BIN_DIR}/genjava_message_artifacts) |
| 9 | +set(genjava_INSTALL_DIR "maven/org/ros/rosjava_messages") |
| 10 | + |
| 11 | +include(CMakeParseArguments) |
| 12 | + |
| 13 | +# Api for a a catkin metapackage rolls rosjava messages for |
| 14 | +# its dependencies. Accepts a list of package names attached |
| 15 | +# to the PACKAGES arg (similar to the genmsg |
| 16 | +# 'generate_messages' api. |
| 17 | +# |
| 18 | +# generate_rosjava_messages( |
| 19 | +# PACKAGES |
| 20 | +# std_msgs |
| 21 | +# geometry_msgs |
| 22 | +# ) |
| 23 | +macro(generate_rosjava_messages) |
| 24 | + if( ${ARGC} EQUAL 0 ) |
| 25 | + return() # Nothing to do (no packages specified) |
| 26 | + else() |
| 27 | + cmake_parse_arguments(ARG "" "" "PACKAGES" ${ARGN}) |
| 28 | + endif() |
| 29 | + if(ARG_UNPARSED_ARGUMENTS) |
| 30 | + message(FATAL_ERROR "generate_rosjava_messages() called with unused arguments: ${ARG_UNPARSED_ARGUMENTS}") |
| 31 | + endif() |
| 32 | + set(ROS_GRADLE_VERBOSE $ENV{ROS_GRADLE_VERBOSE}) |
| 33 | + if(ROS_GRADLE_VERBOSE) |
| 34 | + set(verbosity "--verbosity") |
| 35 | + else() |
| 36 | + set(verbosity "") |
| 37 | + endif() |
| 38 | + string(REPLACE ";" " " package_list "${ARG_PACKAGES}") |
| 39 | + add_custom_target(${PROJECT_NAME}_rosjava_messages |
| 40 | + ALL |
| 41 | + COMMAND ${CATKIN_ENV} ${PYTHON_EXECUTABLE} ${GENJAVA_BIN} |
| 42 | + ${verbosity} |
| 43 | + -o ${CMAKE_CURRENT_BINARY_DIR} |
| 44 | + -p ${ARG_PACKAGES} # this has to be a list argument so it separates each arg (not a single string!) |
| 45 | + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 46 | + COMMENT "Compiling rosjava message artifacts for [${package_list}]" |
| 47 | + ) |
| 48 | + foreach(pkg ${ARG_PACKAGES}) |
| 49 | + message(STATUS "Additional clean file.......${CMAKE_CURRENT_BINARY_DIR}/${pkg}/build.gradle") |
| 50 | + set_directory_properties(PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_CURRENT_BINARY_DIR}/${pkg}/build.gradle) |
| 51 | + add_dependencies(${PROJECT_NAME}_rosjava_messages ${pkg}_generate_messages) |
| 52 | + endforeach() |
| 53 | +endmacro() |
0 commit comments