diff --git a/cmake/YarpIDL.cmake b/cmake/YarpIDL.cmake index 76450f090c3..1bc200e0dc6 100644 --- a/cmake/YarpIDL.cmake +++ b/cmake/YarpIDL.cmake @@ -565,8 +565,18 @@ function(YARP_ADD_IDL var) message(FATAL_ERROR "Unknown extension ${ext}. Supported extensions are .thrift, .msg, and .srv") endif() - # FIXME This should handle cross-compiling - set(YARPIDL_${family}_COMMAND YARP::yarpidl_${family}) + if (CMAKE_CROSSCOMPILING) + find_program(YARPIDL_${family}_LOCATION + NAMES yarpidl_${family} + HINTS ${YARP_IDL_BINARY_HINT} # This is a list of directories defined + # in YarpOptions.cmake (for YARP) or in + # YARPConfig.cmake for dependencies + NO_DEFAULT_PATH + ) + set(YARPIDL_${family}_COMMAND ${YARPIDL_${family}_LOCATION}) + else() + set(YARPIDL_${family}_COMMAND YARP::yarpidl_${family}) + endif() # Set output directories and remove extra "/" and ensure that the directory # exists. @@ -603,7 +613,9 @@ function(YARP_ADD_IDL var) endforeach() if(NOT "${output}" STREQUAL "") - set(depends ${YARPIDL_${family}_COMMAND}) + if(TARGET ${YARPIDL_${family}_COMMAND}) + set(depends ${YARPIDL_${family}_COMMAND}) + endif() if(NOT native) list(APPEND depends ${file}) endif()