widl: Add support for generating typelibs directly in resource format.
This commit is contained in:
parent
36e73eb3fb
commit
b568287eef
|
@ -1725,7 +1725,6 @@ static typelib_t *make_library(const char *name, const attr_list_t *attrs)
|
||||||
{
|
{
|
||||||
typelib_t *typelib = xmalloc(sizeof(*typelib));
|
typelib_t *typelib = xmalloc(sizeof(*typelib));
|
||||||
typelib->name = xstrdup(name);
|
typelib->name = xstrdup(name);
|
||||||
typelib->filename = NULL;
|
|
||||||
typelib->attrs = attrs;
|
typelib->attrs = attrs;
|
||||||
list_init( &typelib->importlibs );
|
list_init( &typelib->importlibs );
|
||||||
return typelib;
|
return typelib;
|
||||||
|
|
|
@ -255,9 +255,7 @@ unsigned short get_type_vt(type_t *t)
|
||||||
void start_typelib(typelib_t *typelib_type)
|
void start_typelib(typelib_t *typelib_type)
|
||||||
{
|
{
|
||||||
if (!do_typelib) return;
|
if (!do_typelib) return;
|
||||||
|
|
||||||
typelib = typelib_type;
|
typelib = typelib_type;
|
||||||
typelib->filename = xstrdup(typelib_name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void end_typelib(void)
|
void end_typelib(void)
|
||||||
|
|
|
@ -48,7 +48,9 @@ Use old naming conventions.
|
||||||
.PP
|
.PP
|
||||||
.B Type library options:
|
.B Type library options:
|
||||||
.IP \fB-t\fR
|
.IP \fB-t\fR
|
||||||
Generate a type library. The default output filename is \fIinfile\fB.tlb\fR.
|
Generate a type library. The default output filename is
|
||||||
|
\fIinfile\fB.tlb\fR. If the output file name ends in \fB.res\fR, a
|
||||||
|
binary resource file containing the type library is generated instead.
|
||||||
.IP "\fB-m32, -m64\fR"
|
.IP "\fB-m32, -m64\fR"
|
||||||
Generate a Win32, respectively Win64, type library.
|
Generate a Win32, respectively Win64, type library.
|
||||||
.PP
|
.PP
|
||||||
|
|
|
@ -494,7 +494,6 @@ struct _importlib_t {
|
||||||
|
|
||||||
struct _typelib_t {
|
struct _typelib_t {
|
||||||
char *name;
|
char *name;
|
||||||
char *filename;
|
|
||||||
const attr_list_t *attrs;
|
const attr_list_t *attrs;
|
||||||
struct list importlibs;
|
struct list importlibs;
|
||||||
statement_list_t *stmts;
|
statement_list_t *stmts;
|
||||||
|
|
|
@ -2542,7 +2542,13 @@ static void save_all_changes(msft_typelib_t *typelib)
|
||||||
ctl2_write_segment( typelib, MSFT_SEG_CUSTDATAGUID );
|
ctl2_write_segment( typelib, MSFT_SEG_CUSTDATAGUID );
|
||||||
|
|
||||||
ctl2_write_typeinfos(typelib);
|
ctl2_write_typeinfos(typelib);
|
||||||
flush_output_buffer( typelib->typelib->filename );
|
|
||||||
|
if (strendswith( typelib_name, ".res" )) /* create a binary resource file */
|
||||||
|
{
|
||||||
|
add_output_to_resources( "TYPELIB", "#1" );
|
||||||
|
flush_output_resources( typelib_name );
|
||||||
|
}
|
||||||
|
else flush_output_buffer( typelib_name );
|
||||||
}
|
}
|
||||||
|
|
||||||
int create_msft_typelib(typelib_t *typelib)
|
int create_msft_typelib(typelib_t *typelib)
|
||||||
|
|
Loading…
Reference in New Issue