@@ -39,8 +39,6 @@ if(NOT WIN32)
3939 endif ()
4040endif ()
4141
42- set (CMAKE_JAVA_COMPILE_FLAGS "-source" "1.6" "-target" "1.6" )
43-
4442# Get a list of typesupport implementations from valid rmw implementations.
4543rosidl_generator_java_get_typesupports(_typesupport_impls)
4644
@@ -51,48 +49,53 @@ endif()
5149
5250set (_output_path
5351 "${CMAKE_CURRENT_BINARY_DIR} /rosidl_generator_java/${PROJECT_NAME} " )
54- set (_generated_cpp_files "" )
55- set (_generated_msg_java_files "" )
56- set (_generated_msg_cpp_files "" )
57- set (_generated_srv_java_files "" )
58- set (_generated_srv_cpp_files "" )
52+ set (_generated_extension_files "" )
53+ set (_generated_java_files "" )
5954
60- foreach (_idl_file ${rosidl_generate_interfaces_IDL_FILES} )
61- get_filename_component (_parent_folder "${_idl_file} " DIRECTORY )
62- get_filename_component (_parent_folder "${_parent_folder} " NAME )
63- get_filename_component (_module_name "${_idl_file} " NAME_WE )
55+ foreach (_typesupport_impl ${_typesupport_impls} )
56+ set (_generated_extension_${_typesupport_impl} _files "" )
57+ endforeach ()
6458
65- if (_parent_folder STREQUAL "msg" )
66- list (APPEND _generated_msg_java_files
67- "${_output_path} /${_parent_folder} /${_module_name} .java"
59+ foreach (_abs_idl_file ${rosidl_generate_interfaces_ABS_IDL_FILES} )
60+ get_filename_component (_parent_folder "${_abs_idl_file} " DIRECTORY )
61+ get_filename_component (_parent_folder "${_parent_folder} " NAME )
62+ get_filename_component (_idl_name "${_abs_idl_file} " NAME_WE )
63+ list (APPEND _generated_java_files
64+ "${_output_path} /${_parent_folder} /${_idl_name} .java"
65+ )
66+ # TODO(jacobperron): Is there a more robust way of detecting services and actions
67+ # Services generate extra files
68+ if (_parent_folder STREQUAL "srv" )
69+ list (APPEND _generated_java_files
70+ "${_output_path} /${_parent_folder} /${_idl_name} _Request.java"
71+ "${_output_path} /${_parent_folder} /${_idl_name} _Response.java"
6872 )
69-
70- foreach (_typesupport_impl ${_typesupport_impls} )
71- list_append_unique(_generated_msg_cpp_files
72- "${_output_path} /${_parent_folder} /${_module_name} .ep.${_typesupport_impl} .cpp"
73- )
74- list (APPEND _type_support_by_generated_msg_cpp_files "${_typesupport_impl} " )
75- endforeach ()
76- elseif (_parent_folder STREQUAL "srv" )
77- list (APPEND _generated_srv_java_files
78- "${_output_path} /${_parent_folder} /${_module_name} .java"
73+ endif ()
74+ # Actions generate extra files
75+ if (_parent_folder STREQUAL "action" )
76+ list (APPEND _generated_java_files
77+ "${_output_path} /${_parent_folder} /${_idl_name} _Goal.java"
78+ "${_output_path} /${_parent_folder} /${_idl_name} _Result.java"
79+ "${_output_path} /${_parent_folder} /${_idl_name} _Feedback.java"
7980 )
80-
81- foreach (_typesupport_impl ${_typesupport_impls} )
82- list_append_unique(_generated_srv_cpp_files
83- "${_output_path} /${_parent_folder} /${_module_name} .ep.${_typesupport_impl} .cpp"
84- )
85- list (APPEND _type_support_by_generated_srv_cpp_files "${_typesupport_impl} " )
86- endforeach ()
87- else ()
88- message (FATAL_ERROR "Interface file with unknown parent folder: ${_idl_file} " )
8981 endif ()
82+
83+ foreach (_typesupport_impl ${_typesupport_impls} )
84+ list (APPEND _generated_extension_${_typesupport_impl} _files "${_output_path} /${_parent_folder} /${_idl_name} .ep.${_typesupport_impl} .cpp" )
85+ endforeach ()
86+ endforeach ()
87+
88+ foreach (_typesupport_impl ${_typesupport_impls} )
89+ foreach (_generated_file ${_generated_extension_${_typesupport_impl} _files})
90+ list (APPEND _generated_extension_files "${_generated_file} " )
91+ list (APPEND _typesupport_by_generated_cpp_files "${_typesupport_impl} " )
92+ endforeach ()
9093endforeach ()
9194
9295set (_dependency_files "" )
9396set (_dependencies "" )
9497foreach (_pkg_name ${rosidl_generate_interfaces_DEPENDENCY_PACKAGE_NAMES} )
95- foreach (_idl_file ${${_pkg_name} _INTERFACE_FILES })
98+ foreach (_idl_file ${${_pkg_name} _IDL_FILES })
9699 set (_abs_idl_file "${${_pkg_name} _DIR}/../${_idl_file} " )
97100 normalize_path(_abs_idl_file "${_abs_idl_file} " )
98101 list (APPEND _dependency_files "${_abs_idl_file} " )
@@ -103,11 +106,15 @@ endforeach()
103106set (target_dependencies
104107 "${rosidl_generator_java_BIN} "
105108 ${rosidl_generator_java_GENERATOR_FILES}
109+ "${rosidl_generator_java_TEMPLATE_DIR} /action.cpp.em"
110+ "${rosidl_generator_java_TEMPLATE_DIR} /idl.cpp.em"
106111 "${rosidl_generator_java_TEMPLATE_DIR} /msg.cpp.em"
107112 "${rosidl_generator_java_TEMPLATE_DIR} /srv.cpp.em"
113+ "${rosidl_generator_java_TEMPLATE_DIR} /action.java.em"
114+ "${rosidl_generator_java_TEMPLATE_DIR} /idl.java.em"
108115 "${rosidl_generator_java_TEMPLATE_DIR} /msg.java.em"
109116 "${rosidl_generator_java_TEMPLATE_DIR} /srv.java.em"
110- ${rosidl_generate_interfaces_IDL_FILES }
117+ ${rosidl_generate_interfaces_ABS_IDL_FILES }
111118 ${_dependency_files} )
112119foreach (dep ${target_dependencies} )
113120 if (NOT EXISTS "${dep} " )
@@ -119,7 +126,7 @@ set(generator_arguments_file "${CMAKE_BINARY_DIR}/rosidl_generator_java__argumen
119126rosidl_write_generator_arguments(
120127 "${generator_arguments_file} "
121128 PACKAGE_NAME "${PROJECT_NAME} "
122- ROS_INTERFACE_FILES "${rosidl_generate_interfaces_IDL_FILES } "
129+ IDL_TUPLES "${rosidl_generate_interfaces_IDL_TUPLES } "
123130 ROS_INTERFACE_DEPENDENCIES "${_dependencies} "
124131 OUTPUT_DIR "${_output_path} "
125132 TEMPLATE_DIR "${rosidl_generator_java_TEMPLATE_DIR} "
@@ -128,7 +135,6 @@ rosidl_write_generator_arguments(
128135
129136file (MAKE_DIRECTORY "${_output_path} " )
130137
131- set (_generated_extension_files "" )
132138set (_extension_dependencies "" )
133139set (_target_suffix "__java" )
134140
@@ -156,10 +162,8 @@ add_subdirectory("${_subdir}" ${rosidl_generate_interfaces_TARGET}${_target_suff
156162
157163set_property (
158164 SOURCE
159- ${_generated_msg_java_files}
160- ${_generated_msg_cpp_files}
161- ${_generated_srv_java_files}
162- ${_generated_srv_cpp_files}
165+ ${_generated_extension_files}
166+ ${_generated_java_files}
163167 PROPERTY GENERATED 1)
164168
165169macro (set_properties _build_type)
@@ -172,35 +176,29 @@ macro(set_properties _build_type)
172176 OUTPUT_NAME "${_library_path} " )
173177endmacro ()
174178
175- set (_type_support_by_generated_cpp_files ${_type_support_by_generated_msg_cpp_files} ${_type_support_by_generated_srv_cpp_files} )
176- set (_generated_cpp_files ${_generated_msg_cpp_files} ${_generated_srv_cpp_files} )
177-
178- set (_javaext_suffix "__javaext" )
179- foreach (_generated_cpp_file ${_generated_cpp_files} )
180- get_filename_component (_full_folder "${_generated_cpp_file} " DIRECTORY )
181- get_filename_component (_package_folder "${_full_folder} " DIRECTORY )
182- get_filename_component (_package_name "${_package_folder} " NAME )
183- get_filename_component (_parent_folder "${_full_folder} " NAME )
184- get_filename_component (_base_msg_name "${_generated_cpp_file} " NAME_WE )
185- list (FIND _generated_cpp_files ${_generated_cpp_file} _file_index)
186- list (GET _type_support_by_generated_cpp_files ${_file_index} _typesupport_impl)
179+ foreach (_generated_cpp_file ${_generated_extension_files} )
180+ list (FIND _generated_extension_files ${_generated_cpp_file} _file_index)
181+ list (GET _typesupport_by_generated_cpp_files ${_file_index} _typesupport_impl)
187182 find_package (${_typesupport_impl} REQUIRED)
188- set (_generated_msg_cpp_common_file "${_full_folder} /${_base_msg_name} .cpp" )
183+ get_filename_component (_parent_folder "${_generated_cpp_file} " DIRECTORY )
184+ get_filename_component (_parent_folder "${_parent_folder} " NAME )
185+ get_filename_component (_parent_folder "${_parent_folder} " NAME )
186+ get_filename_component (_base_name "${_generated_cpp_file} " NAME_WE )
189187 string (REGEX REPLACE "^rosidl_typesupport_" "" _short_typesupport_impl ${_typesupport_impl} )
190- set (_library_name
191- "${_parent_folder}${_base_msg_name}${_short_typesupport_impl} "
192- )
188+ set (_library_name "${_parent_folder}${_base_name}${_short_typesupport_impl} " )
193189 set (_library_path
194- "${_package_name } _${_parent_folder} _${_base_msg_name } __jni__${_typesupport_impl} "
190+ "${rosidl_generate_interfaces_TARGET } _${_parent_folder} _${_base_name } __jni__${_typesupport_impl} "
195191 )
196192 string_camel_case_to_lower_case_underscore(${_library_path} _library_path)
193+
197194 add_library (${_library_name} SHARED
198195 ${_generated_cpp_file}
199196 )
200197 add_dependencies (
201198 ${_library_name}
202199 ${rosidl_generate_interfaces_TARGET}${_target_suffix}
203200 ${rosidl_generate_interfaces_TARGET} __rosidl_typesupport_c
201+ ${_target_dependencies}
204202 )
205203 set (_extension_compile_flags "" )
206204 if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
@@ -248,9 +246,6 @@ foreach(_generated_cpp_file ${_generated_cpp_files})
248246 )
249247 target_link_libraries (${_library_name} ${${_pkg_name} _JNI_LIBRARIES})
250248 endforeach ()
251- add_dependencies (${_library_name}
252- ${rosidl_generate_interfaces_TARGET} __${_typesupport_impl}
253- )
254249 if (NOT rosidl_generate_interfaces_SKIP_INSTALL)
255250 install (TARGETS ${_library_name}
256251 ARCHIVE DESTINATION lib/jni
@@ -277,18 +272,16 @@ add_custom_command(
277272
278273if (NOT rosidl_generate_interfaces_SKIP_INSTALL)
279274 set (_install_jar_dir "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} " )
280- if (NOT _generated_msg_java_files STREQUAL "" OR NOT _generated_srv_java_files STREQUAL "" )
275+ if (NOT _generated_java_files STREQUAL "" )
281276 install_jar("${PROJECT_NAME} _messages_jar" "share/${PROJECT_NAME} /java" )
282277 ament_export_jars("share/${PROJECT_NAME} /java/${PROJECT_NAME} _messages.jar" )
283278 endif ()
284279endif ()
285280
286281if (BUILD_TESTING AND rosidl_generate_interfaces_ADD_LINTER_TESTS)
287282 if (
288- NOT _generated_msg_java_files STREQUAL "" OR
289- NOT _generated_msg_cpp_files STREQUAL "" OR
290- NOT _generated_srv_java_files STREQUAL "" OR
291- NOT _generated_srv_cpp_files STREQUAL ""
283+ NOT _generated_java_files STREQUAL "" OR
284+ NOT _generated_extension_files STREQUAL ""
292285 )
293286 find_package (ament_cmake_cppcheck REQUIRED)
294287 ament_cppcheck(
0 commit comments