Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

pyxpidl

The pyxpidl tool suite has been built to replace the older xpidl tool which, in the past, was used to turn XPIDL files into C++ headers and XPCOM typelibs (XPT files). The newer utility has the advantage of not needing any code to be compiled in order to use it, and let us remove a bunch of old code from the tree.

pyxpidl has been in use for a while, but replaced xpidl in the Gecko SDK starting in Gecko 9.0.

Using pyxpidl

pyxpidl is in the SDK in the sdkdir/sdk/bin/ directory. Unlike xpidl, which combined all the functions into a single utility, pyxpidl is comprised of two utilities: header.py, which generates C++ headers from IDL, and typelib.py, which generates XPT files.

pyxpidl requires a directory to cache certain information in.  You can use a temporary directory or the current directory or whatever works best for you.

Generating C++ headers

To generate C++ headers, use the header.py utility:

sdkdir/sdk/bin/header.py --cachedir=<path> -o <outputfilename.h> <filename.idl>

Generating typelibs

Generating typelib files is done using the typelib.py utility:

sdkdir/sdk/bin/typelib.py --cachedir=<path> -o <outputfilename.xpt> <filename.idl>

Comparing pyxpidl to xpidl

This table provides a mapping of old xpidl options to pyxpidl.

xpidl option Description pyxpidl equivalent
-a Emit annotations to typelib n/a (feature removed)
-w Turn on warnings n/a (this is now the default and can't be turned off)
-v Verbose mode (NYI) n/a (feature removed)
-t Creates a typelib of a specific version number n/a (feature removed, and probably never actually worked)
-I Add an entry to start of include path for #include "nsIFoo.idl" -I (unchanged)
-o Specify the base name for output (-o /tmp/nsIFoo for example) -o outputfile (this isn't just the base name, but needs to include the extension; for example -o /tmp/nsIFoo.idl)
-e Specify an explicit output file name (-e /tmp/nsIFoo.idl for example) n/a (this is subsumed by -o now)
-d Write dependencies (requires -e) -d (unchanged)
-m Specify output mode n/a (feature removed; use header.py or typelib.py specifically)

It's worth noting that the old output mode options for generating documentation and Java interfaces (-m doc and -m java) have no equivalents in pyxpidl.

See also

Document Tags and Contributors

 Contributors to this page: spatenotte, fscholz, kscarfone, Sheppy, khuey
 Last updated by: spatenotte,