diff --git a/tools/widl/client.c b/tools/widl/client.c index a0b0f2518d4..a6aa4a410f9 100644 --- a/tools/widl/client.c +++ b/tools/widl/client.c @@ -432,7 +432,7 @@ void write_client(ifref_t *ifaces) if (!do_client) return; - if (!iface) + if (do_everything && !ifaces) return; END_OF_LIST(iface); diff --git a/tools/widl/proxy.c b/tools/widl/proxy.c index 3480b7d125b..329d0b887fe 100644 --- a/tools/widl/proxy.c +++ b/tools/widl/proxy.c @@ -999,12 +999,12 @@ void write_proxies(ifref_t *ifaces) int c; if (!do_proxies) return; - if (!lcur) return; - END_OF_LIST(lcur); + if (do_everything && !ifaces) return; init_proxy(ifaces); if(!proxy) return; + END_OF_LIST(lcur); cur = lcur; while (cur) { if (is_object(cur->iface->attrs) && !is_local(cur->iface->attrs)) @@ -1012,8 +1012,6 @@ void write_proxies(ifref_t *ifaces) cur = PREV_LINK(cur); } - if (!proxy) return; - write_stubdesc(); print_proxy( "#if !defined(__RPC_WIN32__)\n"); diff --git a/tools/widl/server.c b/tools/widl/server.c index 630e41448e1..d08fa076a70 100644 --- a/tools/widl/server.c +++ b/tools/widl/server.c @@ -572,7 +572,7 @@ void write_server(ifref_t *ifaces) if (!do_server) return; - if (!ifaces) + if (do_everything && !ifaces) return; END_OF_LIST(iface); diff --git a/tools/widl/widl.c b/tools/widl/widl.c index c04d07f8e50..8cb84dc76e8 100644 --- a/tools/widl/widl.c +++ b/tools/widl/widl.c @@ -87,7 +87,7 @@ int debuglevel = DEBUGLEVEL_NONE; int parser_debug, yy_flex_debug; int pedantic = 0; -static int do_everything = 1; +int do_everything = 1; int preprocess_only = 0; int do_header = 0; int do_typelib = 0; diff --git a/tools/widl/widl.h b/tools/widl/widl.h index e84a5ade6eb..d95ee09bd28 100644 --- a/tools/widl/widl.h +++ b/tools/widl/widl.h @@ -36,6 +36,7 @@ extern int debuglevel; extern int win32; extern int pedantic; +extern int do_everything; extern int do_header; extern int do_typelib; extern int do_proxies;