Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions cmake/YarpDeviceParamsParserGenerator.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,21 @@ function(generateDeviceParamsParser_fromIniFile CLASSNAME DEVICENAME FILEINI EXT
generateDeviceParamsParser_commandline (${COMMAND})
endfunction()

# If an additional argument is specified, it is considered the OUTPUTDIR
function(generateDeviceParamsParser CLASSNAME DEVICENAME)
if (NOT ARGN)
set (OUTPUTDIR ${CMAKE_CURRENT_SOURCE_DIR})
else ()
set (OUTPUTDIR ${ARGN})
endif ()
set (INPUTFILENAME_INI "${CMAKE_CURRENT_SOURCE_DIR}/${CLASSNAME}_params.ini")
set (INPUTFILENAME_MD "${CMAKE_CURRENT_SOURCE_DIR}/${CLASSNAME}_params.md")
set (INPUTFILENAME_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/${CLASSNAME}_params_extracomments.md")

if (EXISTS ${INPUTFILENAME_INI})
set (COMMAND "--class_name ${CLASSNAME} --module_name ${DEVICENAME} --input_filename_ini ${INPUTFILENAME_INI}")
set (COMMAND "--class_name ${CLASSNAME} --module_name ${DEVICENAME} --input_filename_ini ${INPUTFILENAME_INI} --output_dir ${OUTPUTDIR}")
elseif (EXISTS ${INPUTFILENAME_MD})
set (COMMAND "--class_name ${CLASSNAME} --module_name ${DEVICENAME} --input_filename_md ${INPUTFILENAME_MD}")
set (COMMAND "--class_name ${CLASSNAME} --module_name ${DEVICENAME} --input_filename_md ${INPUTFILENAME_MD} --output_dir ${OUTPUTDIR}")
else()
message(FATAL_ERROR "Cannot find input file ${INPUTFILENAME_INI} or ${INPUTFILENAME_MD}")
endif()
Expand Down
9 changes: 8 additions & 1 deletion cmake/YarpPlugin.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ endmacro()
# [ADVANCED]
# [INTERNAL]
# [GENERATE_PARSER]
# [GENERATE_PARSER_OUTPUT_DIR <output_dir>]
# [DEPENDS <condition>]
# [TEMPLATE <file_name|path_to_a_file>]
# [TEMPLATE_DIR <dir>]
Expand Down Expand Up @@ -221,6 +222,8 @@ endmacro()
# CMake.
# If the ``GENERATE_PARSER`` option is enabled, a parameter parser will be generated
# for the plugin. See documentation of: generateDeviceParamsParser()
# If the ``GENERATE_PARSER_OUTPUT_DIR`` parameter is passed and ``GENERATE_PARSER`` option is enabled,
# the file generated by ``GENERATE_PARSER`` will be placed in the specified directory.
# If the ``INTERNAL`` option is enabled, this option is marked as internal in
# CMake, and therefore not displayed in CMake gui. This also implies
# `DEFAULT=ON` unless explicitly specified.
Expand Down Expand Up @@ -265,6 +268,7 @@ macro(YARP_PREPARE_PLUGIN _plugin_name)
DEFAULT
TEMPLATE
TEMPLATE_DIR
GENERATE_PARSER_OUTPUT_DIR
)
set(_multiValueArgs
DEPENDS
Expand Down Expand Up @@ -572,9 +576,12 @@ YARP_DEFINE_SHARED_SUBCLASS(\@YARPPLUG_NAME\@, \@YARPPLUG_TYPE\@, \@YARPPLUG_PAR
endif()

if (NOT SKIP_${_plugin_name})
if(NOT _YPP_GENERATE_PARSER_OUTPUT_DIR)
set(_YPP_GENERATE_PARSER_OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
endif()
if(_YPP_GENERATE_PARSER)
message ("Invoking generateDeviceParamsParser (${_YPP_TYPE} ${_plugin_name})")
generateDeviceParamsParser(${_YPP_TYPE} ${_plugin_name})
generateDeviceParamsParser(${_YPP_TYPE} ${_plugin_name} ${_YPP_GENERATE_PARSER_OUTPUT_DIR})
endif()
endif()
endmacro()
Expand Down
Loading