From 037c045e9a2cbaf9de639e43f152a7ffac884e1f Mon Sep 17 00:00:00 2001 From: Silvio Traversaro Date: Thu, 6 Jul 2023 12:04:00 +0200 Subject: [PATCH 1/2] Fix yarp_add_idl use when cross-compiling --- cmake/YarpIDL.cmake | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/cmake/YarpIDL.cmake b/cmake/YarpIDL.cmake index 76450f090c3..c8a3322ba11 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() From 0f523edabc797a1ae001823c7b5557f372c66fbd Mon Sep 17 00:00:00 2001 From: Silvio Traversaro Date: Thu, 6 Jul 2023 22:27:34 +0200 Subject: [PATCH 2/2] Update YarpIDL.cmake --- cmake/YarpIDL.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/YarpIDL.cmake b/cmake/YarpIDL.cmake index c8a3322ba11..1bc200e0dc6 100644 --- a/cmake/YarpIDL.cmake +++ b/cmake/YarpIDL.cmake @@ -566,14 +566,14 @@ function(YARP_ADD_IDL var) endif() if (CMAKE_CROSSCOMPILING) - find_program(YARPIDL_${_family}_LOCATION - NAMES yarpidl_${_family} + 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) + set(YARPIDL_${family}_COMMAND ${YARPIDL_${family}_LOCATION}) else() set(YARPIDL_${family}_COMMAND YARP::yarpidl_${family}) endif()