idl files have changed the location in debian and derivatives

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