Skip to content
This repository was archived by the owner on Jan 14, 2023. It is now read-only.

Commit 610e8af

Browse files
committed
adding smarts to the message artifact catkin api.
1 parent c91db4d commit 610e8af

File tree

3 files changed

+62
-4
lines changed

3 files changed

+62
-4
lines changed

CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ find_package(catkin REQUIRED COMPONENTS genmsg)
1717

1818
catkin_package(
1919
CATKIN_DEPENDS genmsg
20-
CFG_EXTRAS genjava-extras.cmake
20+
CFG_EXTRAS
21+
genjava-extras.cmake
22+
genjava-catkin-api.cmake
2123
)
2224

2325
catkin_python_setup()

cmake/genjava-catkin-api.cmake.em

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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()

scripts/CMakeLists.txt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
# Installs
33
##############################################################################
44

5+
# Rosrunnable installation of scripts
56
catkin_install_python(
6-
PROGRAMS genjava_gradle_project.py
7-
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
8-
)
7+
PROGRAMS
8+
genjava_gradle_project.py
9+
genjava_message_artifacts
10+
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
11+
)

0 commit comments

Comments
 (0)