Yes, I still have this problem. The problem occurs if you are including
an IDL file in another IDL file. Imagine this:
/* a.idl */
module BRUTUS {
   interface foobar {
      void method();
   };
};

/* b.idl */
#Include "a.idl"
module BRUTUS {
   interface foo {
      void bar(in foobar parm);
   };
};

/* c.idl */
#Include "a.idl"
module BRUTUS {
   interface footty {
      void barty(out foobar parm);
   };
};

"b.idl" and "c.idl" are both including "a.idl". Now compile these 3 idl
files without the --onlytop option. You will observe that b.h and c.h
does not merely contain #include "a.h" but the entire content of a.h.
This will therefore make linking of the b.idl and c.idl compilation
products impossible due to multible definitions of foobar.

You must compile with --onlytop to produce file that merely includes the
appropiate headers instead of the entire file content. Only --onlytop
will give you IDL compilation products that compile _and_ link as
intended.

A good way to demonstrate this is simply to go get:

http://www.omesc.com/content/downloads/dist/SOURCES/evolution-
brutus-1.1.22.tar.gz

and simply do:

./autogen.sh && make

evolution-brutus has a lot of IDL files that includes other IDL files.

-- 
--onlytop does not work
https://launchpad.net/bugs/66560

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to