Hi,
since 5.7.7 [1], the debian maintainers put the idl files in /usr/share/idl.
So, the FindTAO.cmake macro fails. This change probably will do that orocos
2.x will fail to compile in any debian derivative distro soon.
I'm playing a bit how to modify the macro, but I would like to ask first. Now
all works because the idl files are located in the default include directory,
so, files like rtt/rtt/transports/corba/Service.idl with:
#include <tao/orb.idl>
now compiles. But we should add /usr/share/idl to the include directories
because if not, it will fail if the user has ace version > 5.7.7 in a debian
derivative distro.
So, what do you think to modify the FindTAO.cmake to find the idl path and add
it to the include directories?
regards,
Leo
[1]
http://packages.debian.org/changelogs/pool/main/a/ace/ace_5.7.7-3/changelog
idl files have changed the location in debian and derivatives
On Wednesday 06 October 2010 19:56:46 Leopold Palomo-Avellaneda wrote:
> Hi,
>
> since 5.7.7 [1], the debian maintainers put the idl files in
> /usr/share/idl. So, the FindTAO.cmake macro fails. This change probably
> will do that orocos 2.x will fail to compile in any debian derivative
> distro soon.
Thanks for letting us know.
>
> I'm playing a bit how to modify the macro, but I would like to ask first.
> Now all works because the idl files are located in the default include
> directory, so, files like rtt/rtt/transports/corba/Service.idl with:
>
> #include <tao/orb.idl>
>
> now compiles. But we should add /usr/share/idl to the include directories
> because if not, it will fail if the user has ace version > 5.7.7 in a
> debian derivative distro.
>
> So, what do you think to modify the FindTAO.cmake to find the idl path and
> add it to the include directories?
I certainly agree to do this. In order to do this portably, we need to add a
line:
find_path(TAO_IDL_PATH tao/orb.idl ${TAO_IDL_HINTS})
and pass TAO_IDL_PATH to the idl compiler (with -I). The TAO_IDL_HINTS will be
set using TAO_ROOT ( HINTS ${TAO_ROOT}/TAO ) or a 'sane' default, like
set (TAO_IDL_HINTS PATH "/usr/include" "/usr/share/idl")
(hard coded paths are put in 'PATH', hints derived from TAO_ROOT are put in
'HINTS') -- see the cmake docs of find_path
Peter