Select Git revision
genjava-extras.cmake.em
genjava-extras.cmake.em 5.07 KiB
@[if DEVELSPACE]@
# location of scripts in develspace
set(GENJAVA_BIN_DIR "@(CMAKE_CURRENT_SOURCE_DIR)/scripts")
@[else]@
# location of scripts in installspace
set(GENJAVA_BIN_DIR "${GENJAVA_DIR}/../../../@(CATKIN_PACKAGE_BIN_DESTINATION)")
@[end if]@
set(GENJAVA_BIN ${GENJAVA_BIN_DIR}/genjava_gradle_project.py)
#set(GENMSG_JAVA_BIN ${GENJAVA_BIN_DIR}/genmsg_java.py)
#set(GENSRV_JAVA_BIN ${GENJAVA_BIN_DIR}/gensrv_java.py)
# genmsg usually uses this variable to configure the install location. we typically pick
# it up from the environment configured by rosjava_build_tools.
set(genjava_INSTALL_DIR "maven/org/ros/rosjava_messages")
set(ROS_MAVEN_DEPLOYMENT_REPOSITORY $ENV{ROS_MAVEN_DEPLOYMENT_REPOSITORY})
if(NOT ROS_MAVEN_DEPLOYMENT_REPOSITORY)
set(ROS_MAVEN_DEPLOYMENT_REPOSITORY "${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_MAVEN_DESTINATION}")
endif()
# Generate .msg->.h for py
# The generated .h files should be added ALL_GEN_OUTPUT_FILES_py
#
# Example arguments:
#
# ARG_PKG : foo_msgs
# ARG_MSG : /mnt/zaphod/ros/rosjava/hydro/src/foo_msgs/msg/Foo.msg
# ARG_IFLAGS : -Ifoo_msgs:/mnt/zaphod/ros/rosjava/hydro/src/foo_msgs/msg;-Istd_msgs:/opt/ros/hydro/share/std_msgs/cmake/../msg
# ARG_MSG_DEPS : ???
# ARG_GEN_OUTPUT_DIR : /mnt/zaphod/ros/rosjava/hydro/devel/${genjava_INSTALL_DIR}/foo_msgs
macro(_generate_msg_java ARG_PKG ARG_MSG ARG_IFLAGS ARG_MSG_DEPS ARG_GEN_OUTPUT_DIR)
message(STATUS "GEN_MSG_JAVA..........._generate_msg_java [${ARG_PKG}][${ARG_MSG}]")
#message(STATUS " ARG_IFLAGS...........${ARG_IFLAGS}")
#message(STATUS " ARG_MSG_DEPS.........${ARG_MSG_DEPS}")
#message(STATUS " ARG_GEN_OUTPUT_DIR...${ARG_GEN_OUTPUT_DIR}")
#message(STATUS "GEN_MSG_JAVA...........done")
#message(STATUS "CMAKE_CURRENT_BINARY_DIR.......${CMAKE_CURRENT_BINARY_DIR}")
#Append msg to output dir
#set(GEN_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
#file(MAKE_DIRECTORY ${GEN_OUTPUT_DIR})
# Create input and output filenames
get_filename_component(MSG_SHORT_NAME ${ARG_MSG} NAME_WE)
#file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/gradle)
#set(MSG_GENERATED_NAME ${MSG_SHORT_NAME}.java)
#set(GEN_OUTPUT_FILE ${GEN_OUTPUT_DIR}/${MSG_GENERATED_NAME})
#message(STATUS "GEN_OUTPUT_FILE..........${GEN_OUTPUT_FILE}")
#add_custom_command(OUTPUT ${GEN_OUTPUT_FILE}
# DEPENDS ${GENMSG_JAVA_BIN} ${ARG_MSG} ${ARG_MSG_DEPS}
# COMMAND ${CATKIN_ENV} cmake
# -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}
# -m ${ARG_MSG}
# ${ARG_IFLAGS}
# -p ${ARG_PKG}
# -o ${GEN_OUTPUT_DIR}
# COMMENT "Generating Java code from MSG ${ARG_PKG}/${MSG_SHORT_NAME}"
#)
#list(APPEND ALL_GEN_OUTPUT_FILES_java ${GEN_OUTPUT_FILE})
#set(GEN_OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/java/org/ros/rosjava_messages/${ARG_PKG}/${MSG_SHORT_NAME}.java")
#list(APPEND ALL_GEN_OUTPUT_FILES_java ${GEN_OUTPUT_FILE})
endmacro()
#todo, these macros are practically equal. Check for input file extension instead
macro(_generate_srv_java ARG_PKG ARG_SRV ARG_IFLAGS ARG_MSG_DEPS ARG_GEN_OUTPUT_DIR)
message(STATUS "GEN_SRV_JAVA..........._generate_srv_java [${ARG_PKG}][${ARG_SRV}]")
#Append msg to output dir
# set(GEN_OUTPUT_DIR "${ARG_GEN_OUTPUT_DIR}/srv")
# file(MAKE_DIRECTORY ${GEN_OUTPUT_DIR})
#
#Create input and output filenames
# get_filename_component(SRV_SHORT_NAME ${ARG_SRV} NAME_WE)
#
# set(SRV_GENERATED_NAME _${SRV_SHORT_NAME}.py)
# set(GEN_OUTPUT_FILE ${GEN_OUTPUT_DIR}/${SRV_GENERATED_NAME})
#
# add_custom_command(OUTPUT ${GEN_OUTPUT_FILE}
# DEPENDS ${GENSRV_PY_BIN} ${ARG_SRV} ${ARG_MSG_DEPS}
# COMMAND ${CATKIN_ENV} ${PYTHON_EXECUTABLE} ${GENSRV_PY_BIN} ${ARG_SRV}
# ${ARG_IFLAGS}
# -p ${ARG_PKG}
# -o ${GEN_OUTPUT_DIR}
# COMMENT "Generating Python code from SRV ${ARG_PKG}/${SRV_SHORT_NAME}"
# )
#
#list(APPEND ALL_GEN_OUTPUT_FILES_java ${GEN_OUTPUT_FILE})
endmacro()
macro(_generate_module_java ARG_PKG ARG_GEN_OUTPUT_DIR ARG_GENERATED_FILES)
message(STATUS "GEN_MODULE_JAVA..........._generate_module_java")
message(STATUS " ARG_PKG.................${ARG_PKG}")
message(STATUS " ARG_GEN_OUTPUT_DIR......${ARG_GEN_OUTPUT_DIR}")
message(STATUS " ARG_GENERATED_FILES.....${ARG_GENERATED_FILES}")
set(GEN_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/java")
set(GEN_OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/java/build.gradle")
message(STATUS " GEN_OUTPUT_FILE.........${GEN_OUTPUT_FILE}")
message(STATUS " GENJAVA_BIN.............${GENJAVA_BIN}")
file(MAKE_DIRECTORY ${GEN_OUTPUT_DIR})
# if(IS_DIRECTORY ${GEN_OUTPUT_DIR})
list(APPEND ALL_GEN_OUTPUT_FILES_java ${GEN_OUTPUT_FILE})
add_custom_command(OUTPUT ${GEN_OUTPUT_FILE} # ${ARG_GENERATED_FILES}
DEPENDS ${GENJAVA_BIN} # ${ARG_GENERATED_FILES}
COMMAND ${CATKIN_ENV} ${PYTHON_EXECUTABLE} ${GENJAVA_BIN}
-o ${GEN_OUTPUT_DIR}
-p ${ARG_PKG}
COMMENT "Generating java gradle project for compiling ${ARG_PKG}"
)
# list(APPEND ALL_GEN_OUTPUT_FILES_py ${GEN_OUTPUT_FILE})
endmacro()