WIDL(1)
π WIDL(1) β Wine Developers Manual π
okay bestie, sit down, hydrate, because today we're learning about widl, the Wine Interface Definition Language (IDL) compiler. yes it's a compiler. yes it's iconic. yes it lives in the Wine Developers Manual section 1. let's get into it β¨
πΈ SYNOPSIS πΈ
widl [options] IDL_file
widl [options] --dlldata-only name1 [name2...]
π¦ DESCRIPTION π¦
okay so here's the vibe: when you run it with no options at all, it goes full main character and generates a header file, and possibly client and server stubs, proxy and dlldata files, a typelib, and a UUID file β all depending on what's actually inside the IDL file. it's giving "I'll decide what you need" π
but the second you pass any of -c, -h, -p, -s, -t, -u or --local-stubs, it gets picky and generates only the files you asked for, and literally nothing else. no extra credit, no surprises.
then when you run it with --dlldata-only, it will only generate 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: each time widl runs, it reads whatever existing dlldata file is already there, and if necessary it regenerates it with the same list of names β but now with the present proxy file included π«Ά
and if you run it with no arguments whatsoever? it just prints a help message. it's helping. it's doing its best.
β¨ OPTIONS β¨
π General options:
-Vβ Print the version number and exit. boom, done, bye.-o,--output=nameβ Set the name of the output file. When you're generating multiple output files, this sets only the base name of the file; the respective output files then get namedname.h,name_p.c, etc. But if you specify a full file name with an extension, only that one file gets generated. specific queen π-b,--target=cpu-manufacturer[-kernel]-osβ Set the target architecture when you're cross-compiling. The target spec is in the standard autoconf format, exactly as returned byconfig.sub.-m32,-m64,--win32,--win64β Force the target architecture to 32-bit or 64-bit. pick your fighter.--sysroot=dirβ Prefix the standard include paths with dir.--nostdincβ Do NOT search standard include paths like/usr/includeand/usr/local/include. it said no thank you π«
π Header options:
-hβ Generate header files. The default output filename is infile.h.--oldnamesβ Use old naming conventions. vintage. retro. nostalgic.
β Type library options:
-tβ Generate a type library. The default output filename is infile.tlb. And here's a fun twist: if the output file name ends in.res, a binary resource file containing the type library gets generated instead β¨-L pathβ Add a directory to the library search path for imported typelibs. You can specify this option multiple times. stack 'em.--oldtlbβ Generate a type library in the old format (SLTG format). throwback format, love that for it.
π UUID file options:
-uβ Generate a UUID file. The default output filename is infile_i.c.
π¦ Proxy/stub generation options:
--align=n,--packing=nβ Set the structure packing to n. Supported values are2,4, and8.-cβ Generate a client stub file. The default output filename is infile_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, so it's the one pulling up to every party π-pβ Generate a proxy. The default output filename is infile_p.c.--prefix-all=prefixβ Prefix to put on the name of both client and server stubs. equal opportunity prefixing.--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 is infile_s.c.--winrtβ Enable Windows Runtime mode. windows runtime era activated.--ns_prefixβ Prefix namespaces with ABI namespace.
π Registration script options:
-rβ Generate a registration script. The default output filename is infile_r.rgs. And plot twist: if the output file name ends in.res, a binary resource file containing the script is generated instead. same energy as-t, but for scripts π
π Dlldata file options:
--dlldata-only name1 [name2...]β Regenerate the dlldata file from scratch using the specified proxy names. The default output filename isdlldata.c. clean slate, fresh start, new me.
π« Metadata file options:
--winmdβ Generate a Windows Runtime Metadata file. This implies the--winrtmode. The default output filename is infile.winmd.
π§ Preprocessor options:
-I pathβ Add a directory to the include search path. Multiple include directories are allowed. the more the merrier.-D id[=val]β Define preprocessor macro id with value val.-Eβ Preprocess only. don't do anything else. just vibes.-Nβ Do not preprocess input.
π₯ Debug options:
-Wβ Enable pedantic warnings. it will be in your business. lovingly.-d nβ Set debug level to the non negative integer n. If it's prefixed with0x, it will be interpreted as an hexadecimal number. For the meaning of values, see the DEBUG section (it's right below, bestie, keep reading π).
πΈ Miscellaneous options:
-app_configβ Ignored, present formidlcompatibility. it's just there for the lore.--acf=fileβ Use specified application configuration file.--local-stubs=fileβ Generate empty stubs forcall_as/local methods in an object interface and write them to file.
π DEBUG π
Debug level n is a bitmask with the following meaning:
0x01Tell which resource is parsed (verbose mode)0x02Dump internal structures0x04Create a parser trace (yydebug=1)0x08Preprocessor messages0x10Preprocessor lex messages0x20Preprocessor yacc trace
do the math, mix and match, go feral π₯
π BUGS π
Bugs can be reported on the Wine bug tracker. found one? tell on it, fr fr.
π«Ά 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 (iykyk). This man page was originally written by Hannu Valtonen and then updated by Dan Hipschman. legends only π
π AVAILABILITY π
widl is part of the Wine distribution, which is available through WineHQ, the Wine development headquarters. go get it.
π SEE ALSO π
Wine documentation and support. that's the whole list. short and sweet.
and that's the tea, bestie π this was Wine 11.20, dated October 2007 β yes she's been iconic since 2007 and she's still slaying. periodt πβ¨
π¦ where this page comes from
- fedora 44: wine-devel 11.20-1.fc44 Β· LGPL-2.1-or-later
- fedora 44: wine-devel 11.20-1.fc44 Β· 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