WIDL(1)
π WIDL(1) β the Wine Developers Manual, but make it cute
okay so bestie, welcome to widl, the Wine Interface Definition Language (IDL) compiler π. This is from the Wine Developers Manual, and honestly? she's iconic. Let's get into it.
β¨ SYNOPSIS β¨
x86_64-w64-mingw32-widl [options] IDL_file
x86_64-w64-mingw32-widl [options] --dlldata-only name1 [name2...]
πΈ DESCRIPTION πΈ
So here's the vibe. When you run this with no options at all, widl is gonna generate a header file β and possibly client and server stubs, proxy and dlldata files, a typelib, and a UUID file too. All of that depends on what's actually inside your IDL file, okay? She reads the room. π
But the second you pass any of -c, -h, -p, -s, -t, -u or --local-stubs, she switches up: widl will only generate the files you asked for, and no others. No extras, no surprises. periodt.
Then there's --dlldata-only, and with that one widl will only generate a dlldata file, and it's gonna contain a list of the names you passed as arguments. The usual way this file gets updated: every time widl is run, it reads whatever dlldata file already exists, and if it needs to, it regenerates it with the same list of names β except now the present proxy file is included in there too. π¦
And if you run her with zero arguments? She just prints a help message. She's helpful like that, no cap.
π OPTIONS π
General options (the basics, bestie)
-Vβ Print the version number and dip. That's it, that's the whole job. βοΈ-o,--output=nameβ Sets the name of the output file. Now listen: when multiple output files are being generated, this only sets the base name, and then the respective output files get namedname.h,name_p.c, etc. So don't be confused when you see a whole little family of files. π-b cpu-manufacturer[-kernel]-osβ Set the target architecture when cross-compiling. The target spec is in the standard autoconf format, exactly like whatconfig.subreturns. iykyk.
Header options
-hβ Generate header files. The default output filename isinfile.h. π--oldnamesβ Use old naming conventions. Throwback energy, honestly.
Type library options
-tβ Generate a type library. Default output filename isinfile.tlb. But heads up: if the output file name ends in.res, then a binary resource file containing the type library gets generated instead. Plot twist. π-m32,-m64β Generate a Win32 or Win64 type library respectively. Pick your fighter.
UUID file options
-uβ Generate a UUID file. The default output filename isinfile_i.c. β
Proxy/stub generation options
-cβ Generate a client stub file. Default output filename isinfile_c.c.-Osβ Generate inline stubs.-Oiβ Generate old-style interpreted stubs.-Oif,-Oic,-Oicfβ Generate new-style fully interpreted stubs.-pβ Generate a proxy. The default output filename isinfile_p.c.--prefix-all=prefixβ Prefix to put on the name of both client and server stubs. Two for one, slay.--prefix-client=prefixβ Prefix to put on the name of client stubs.--prefix-server=prefixβ Prefix to put on the name of server stubs.-sβ Generate a server stub file. The default output filename isinfile_s.c.--win32,--win64β Only generate 32-bit or 64-bit code respectively. And ngl, the default here is to generate both the 32-bit and 64-bit versions into the same destination file. So if you're wondering why your file is doing the most, that's why. π--rtβ Enable additional language extensions for IDL to support WinRT. Fancy.
Registration script options
-rβ Generate a registration script. Default output filename isinfile_r.rgs. But again, watch out: if the output file name ends in.res, then a binary resource file containing the script is generated instead. π§
Dlldata file options
--dlldata-only name1 [name2...]β Regenerate the dlldata file from scratch using the specified proxy names. The default output filename isdlldata.c.
Preprocessor options
-I pathβ Add a header search directory to path. And you can stack these β multiple search directories are allowed. π«Ά-D id[=val]β Define preprocessor macro id with value val.-Eβ Preprocess only. Nothing more, nothing less.-Nβ Do not preprocess input. She trusts you.
Debug options
-Wβ Enable pedantic warnings. She will be in your business, but lovingly.-d nβ Set debug level to the non-negative integer n. If it's prefixed with0x, it gets interpreted as a hexadecimal number. For what all those values actually mean, go look at the DEBUG section down below. π
Miscellaneous options
-app_configβ Ignored, present for midl compatibility. She's just here for the vibes, standing in the corner, not doing anything. π--local-stubs=fileβ Generate empty stubs forcall_as/localmethods in an object interface and write them to file.
π₯ DEBUG π₯
Debug level n is a bitmask, and here's the whole breakdown:
0x01β Tell which resource is parsed (verbose mode)0x02β Dump internal structures0x04β Create a parser trace (yydebug=1)0x08β Preprocessor messages0x10β Preprocessor lex messages0x20β Preprocessor yacc trace
π BUGS π
Bugs can be reported on the Wine bug tracker. If you found one, tell on her β she can take it, she wants to grow. π
π AUTHORS π
widl was originally written by Ove KΓ₯ven. It has been improved by Rob Shearman, Dan Hipschman, and others. For a complete list, see the git commit logs. This man page was originally written by Hannu Valtonen and then updated by Dan Hipschman. Give them their flowers. π
π AVAILABILITY π
widl is part of the Wine distribution, which is available through WineHQ, the Wine development headquarters.
π¦ SEE ALSO π¦
Wine documentation and support.
okay that's the whole page, you're all caught up bestie π this cutie comes to you from MinGW-w64, dated October 2007 β yes she's an elder but she ate and left no crumbs. go compile something iconic, mwah πβ¨
π¦ where this page comes from
- debian trixie: mingw-w64-tools 12.0.0-5 Β· ZPL-2.1
- ubuntu resolute: mingw-w64-tools 13.0.0-2ubuntu1 Β· ZPL-2.1
- ubuntu stonking: mingw-w64-tools 13.0.0-2ubuntu1 Β· ZPL-2.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms