WIDL(1)
π WIDL(1) π
okay bestie, gather round β this is the Wine Developers Manual page for widl, the Wine Interface Definition Language (IDL) compiler. She compiles IDL files, she generates code, she's lowkey the backbone of a whole lot of Wine internals, and today you're gonna understand her. π
β¨ SYNOPSIS β¨
widl [options] IDL_file
widl [options] --dlldata-only name1 [name2...]
πΈ DESCRIPTION πΈ
So here's the tea, bestie: when you run widl with no options at all, she goes off and generates a header file β and possibly client and server stubs, proxy and dlldata files, a typelib, and a UUID file, depending on what's actually inside your IDL file. She's reading the room and deciding what you need. π
But the moment you pass any of -c, -h, -p, -s, -t, -u or --local-stubs, she snaps into only mode: she will generate only the files you asked for, and no others. No extras, no surprise bonus files, periodt. π
When you run her with --dlldata-only, she only generates a dlldata file, and that file will contain a list of the names you passed as arguments. And here's how that file usually gets updated: every single time widl runs, she reads any existing dlldata file, and if it needs to, she regenerates it with the same list of names β but with the present proxy file included. Like, she remembers your exes but makes them current. π
And if you run her with no arguments at all? She just prints a help message. A little "hi, here's what I do." π«Ά
π OPTIONS π
π General options
-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. When she's generating multiple output files, this only sets the base name; the individual output files then get namedname.h,name_p.c, etc. But if you specify a full file name with an extension, then only that one file gets generated. Choose your fighter. β¨-b,--target=cpu-manufacturer[-kernel]-osβ Set the target architecture when cross-compiling. The target spec is in the standard autoconf format, the same oneconfig.subreturns. π¦-m32,-m64,--win32,--win64β Force the target architecture to 32-bit or 64-bit. Pick a lane, babe.--sysroot=dirβ Prefix the standard include paths withdir.--nostdincβ Do not search standard include paths like/usr/includeand/usr/local/include. She's going rogue, she's independent, she doesn't need them. π
π Header options
-hβ Generate header files. The default output filename isinfile.h.--oldnamesβ Use old naming conventions. Vintage, retro, nostalgic-core.
β Type library options
-tβ Generate a type library. The default output filename isinfile.tlb. And plot twist: if the output file name ends in.res, a binary resource file containing the type library is generated instead. πΈ-L pathβ Add a directory to the library search path for imported typelibs. You can specify this option multiple times β stack 'em, she doesn't mind. π--oldtlbβ Generate a type library in the old format (SLTG format). Grandma's typelib.
π¦ UUID file options
-uβ Generate a UUID file. The default output filename isinfile_i.c.
π₯ Proxy/stub generation options
--align=n,--packing=nβ Set the structure packing ton. Supported values are 2, 4, and 8. Those are the options, bestie, don't get creative.-cβ Generate a client stub file. The 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. This is the default. She's already doing this, you just didn't know. π-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 birds, one prefix.--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.--winrtβ Enable Windows Runtime mode. Entering her WinRT era.--ns_prefixβ Prefix namespaces with the ABI namespace.
π Registration script options
-rβ Generate a registration script. The default output filename isinfile_r.rgs. And same plot twist as the typelib: if the output file name ends in.res, 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 directory to the include search path. Multiple include directories are allowed. Collect them all. β¨-D id[=val]β Define preprocessor macroidwith valueval.-Eβ Preprocess only. Just the appetizer, no main course.-Nβ Do not preprocess input. Raw. Unfiltered. π
π Debug options
-Wβ Enable pedantic warnings. She will be in your business about it.-d nβ Set debug level to the non-negative integern. If prefixed with0x, it gets interpreted as a hexadecimal number. For the meaning of the values, go look at the DEBUG section below, bestie. π
π Miscellaneous options
-app_configβ Ignored, present formidlcompatibility. She's just standing there. Menacingly. π--acf=fileβ Use the specified application configuration file.--local-stubs=fileβ Generate empty stubs forcall_as/localmethods in an object interface and write them tofile.
π DEBUG π
Debug level n is a bitmask, and here's what each bit is giving:
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
Stack those bits like accessories, bestie. β¨
π BUGS π
Found a bug? Bugs can be reported on the Wine bug tracker. She's not mad, she just wants to know. π«Ά
π 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 β the receipts are all there. π
This man page was originally written by Hannu Valtonen and then updated by Dan Hipschman. Iconic lineage, honestly.
π AVAILABILITY π
widl is part of the Wine distribution, which is available through WineHQ, the Wine development headquarters. Go get her. π
πΈ SEE ALSO πΈ
Wine documentation and support.
and that's the whole page, bestie!! π this one's from the Wine Developers Manual, version Wine 10.0, dated October 2007 β yeah, she's a little vintage but she still ate. mwah π β¨
π¦ where this page comes from
- debian trixie: wine64-tools 10.0~repack-6 Β· LGPL-2.1-or-later
- ubuntu questing: wine64-tools 10.0~repack-6ubuntu1
- ubuntu resolute: wine64-tools 10.0~repack-12ubuntu1 Β· LGPL-2.1-or-later
- ubuntu stonking: wine64-tools 10.0~repack-12ubuntu1 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms