Boost logo

Boost-Build :

From: Reece Dunn (msclrhd_at_[hidden])
Date: 2005-05-18 05:49:24

Alexey Pakhunov wrote:
>I implemented limited support of .idl files. Is anyone interested? :)

I am definately interested.

>- Scanner for .idl files. It is able to parse 'include', 'import' and
>'importlib' directives.
>- Support of midl.exe via msvc package;
>- A small fix - msvc.compile.rc is registered using
>'register-c-compiler' instead of 'register-standard'. Thus a build
>directory is passed to RC as an include directory. So adding .tlb (see
>the line below) will work.
> 1 TYPELIB "xxx.tlb"


>Support of midl.exe includes only single command that generates UUID
>(%_i.c) and header (.h) files. In other words "it works for me". At
>least now it is enough to build ALT COM dll.

Can you get it so that it generates the other files as well? The proxy stubs
(%_p.c), dlldata (%_dlldata.c) and type libraries (%.tlb).

Does the following work:

lib mycomdll : myidl.idl mycomdll.cpp ;

// mycomdll.cpp

#include <initguid.h>
#include "myidl.h"
#include "myidl_i.c"

// ...

You need to ensure that the IDL file is processed first (so that the source
files can use the generated files) and that the output path is added to the
include path.

This might get complicated if you have an exe that uses the generated files,

// driver.cpp

#include "myidl.h"

note that this could be resolved by allowing targets to specify an include 
directory, e.g.:
lib mycomdll : myidl.idl mycomdll.cpp : : <include>mycomdll ;
exe driver : driver.cpp : : <include>mycomdll ;
This would then add <include>bin/msvc-7.1/release or wherever mycomdll is 
being built to in both mycomdll and driver. However, it may need something 
to indicate that it is a target path, e.g. <include-target>mycomdll.
It would also be a good idea to provide support for CORBA IDL compilation, 
although I don't know enough about CORBA to know what needs to be changed. 
What would happen if you have a CORBA IDL file and use:
lib corbaidl : corba.idl ... ;
with msvc?
Reece Haston Dunn
Software Engineer, Sophos
Sophos - protecting businesses against viruses and spam

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at