WIDL(1)

πŸ“¦ version 6.0, in ubuntu jammy

πŸ’– WIDL(1) β€” the Wine Developers Manual, but make it make sense πŸ’–

okay bestie, sit down, hydrate, and let me tell you about widl β€” the Wine Interface Definition Language (IDL) compiler. she's the girl who takes your .idl file and turns it into all the little glue files your COM dreams are made of. she's booked, she's busy, and she's about to be your fave. πŸŽ€


✨ SYNOPSIS ✨

widl [options] IDL_file
widl [options] --dlldata-only name1 [name2...]

that's it. that's the whole vibe. one input, a billion outputs (okay, like, six). πŸ¦‹


🌸 DESCRIPTION 🌸

so when you run her with no options at all, widl will generate 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 reads the room, okay? she doesn't just do stuff for no reason. πŸ’…

but if you pass any of -c, -h, -p, -s, -t, -u or --local-stubs, she flips into only-the-requested-files mode and generates those files and literally nothing else. no extras, no surprise files, no chaos. periodt. ✨

and when you run her with --dlldata-only, she only generates a dlldata file, and it will contain a list of the names you passed as arguments. the usual way this file gets updated is: every time widl is run, she reads any existing dlldata file, and if necessary regenerates it with the same list of names, but with the present proxy file included. she's keeping receipts, bestie. 🧚

and if you run her with no arguments at all? she'll just print a help message. she's not gonna guess. πŸ™ˆ

πŸ’– OPTIONS πŸ’–

General options: 🌈

  • -V β€” Print version number and exit. short, sweet, iconic.
  • -o, --output=name β€” Set the name of the output file. When generating multiple output files, this sets only the base name of the file; the respective output files are then named name.h, name_p.c, etc. If a full file name with extension is specified, only that file is generated. so like, commit to the bit or don't. πŸ’…
  • -b, --target=cpu-manufacturer[-kernel]-os β€” Set the target architecture when cross-compiling. The target specification is in the standard autoconf format as returned by config.sub. fancy girl behavior. πŸŽ€
  • -m32, -m64, --win32, --win64 β€” Force the target architecture to 32-bit or 64-bit. pick a lane, queen.
  • --sysroot=dir β€” Prefix the standard include paths with dir.
  • --nostdinc β€” Do not search standard include paths like /usr/include and /usr/local/include. she's going off-grid. πŸ¦‹

Header options: πŸ“„

  • -h β€” Generate header files. The default output filename is infile.h.
  • --oldnames β€” Use old naming conventions. retro. vintage. lowkey nostalgic. ✨

Type library options: πŸ“š

  • -t β€” Generate a type library. The default output filename is infile.tlb. If the output file name ends in .res, a binary resource file containing the type library is generated instead. surprise format change, we love her for it. πŸ’–

UUID file options: πŸ†”

  • -u β€” Generate a UUID file. The default output filename is infile_i.c.

Proxy/stub generation options: πŸ”₯

  • -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. the glow-up era. ✨
  • -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.
  • --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, we're seated. πŸͺ‘
  • --ns_prefix β€” Prefix namespaces with ABI namespace.

Registration script options: πŸ“

  • -r β€” Generate a registration script. The default output filename is infile_r.rgs. If the output file name ends in .res, a binary resource file containing the script is generated instead. (yes, again with the .res twist. she contains multitudes.) πŸŽ€

Dlldata file options: πŸ—‚οΈ

  • --dlldata-only name1 [name2...] β€” Regenerate the dlldata file from scratch using the specified proxy names. The default output filename is dlldata.c.

Preprocessor options: βš™οΈ

  • -I path β€” Add a header search directory to path. Multiple search directories are allowed. stack 'em, bestie.
  • -D id[=val] β€” Define preprocessor macro id with value val.
  • -E β€” Preprocess only. she stops early. boundaries. πŸ’…
  • -N β€” Do not preprocess input.

Debug options: πŸ›

  • -W β€” Enable pedantic warnings. she WILL tell you. lovingly. πŸ’–
  • -d n β€” Set debug level to the non negative integer n. If prefixed with 0x, it will be interpreted as an hexadecimal number. For the meaning of values, see the DEBUG section. (scroll down, babe, I got you πŸ‘‡)

Miscellaneous options: 🌟

  • -app_config β€” Ignored, present for midl compatibility. she's just standing there. existing. serving nothing. πŸ™ˆ
  • --acf=file β€” Use specified application configuration file.
  • --local-stubs=file β€” Generate empty stubs for call_as/local methods in an object interface and write them to file.

πŸ” DEBUG πŸ”

Debug level n is a bitmask with the following meaning β€” mix and match, it's a whole palette bestie 🎨:

  • 0x01 β€” Tell which resource is parsed (verbose mode)
  • 0x02 β€” Dump internal structures
  • 0x04 β€” Create a parser trace (yydebug=1)
  • 0x08 β€” Preprocessor messages
  • 0x10 β€” Preprocessor lex messages
  • 0x20 β€” Preprocessor yacc trace

πŸ’€ BUGS πŸ’€

Bugs can be reported on the Wine bug tracker. not me manifesting a bug report but go off, she wants the feedback 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. This man page was originally written by Hannu Valtonen and then updated by Dan Hipschman. legends only. slay. πŸ’…βœ¨


🌈 AVAILABILITY 🌈

widl is part of the Wine distribution, which is available through WineHQ, the Wine development headquarters. the mothership, if you will. πŸ›Έ


🫢 SEE ALSO 🫢

Wine documentation and support. go read, bestie, I believe in you. πŸ“š


and that's the whole page, no cap. this one's from the Wine Developers Manual β€” Wine 6.0, dated October 2007 β€” so if you see her around, say hi. she ate and left no crumbs. πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’…πŸ«Ά

πŸ“¦ where this page comes from