Public headers and IDL files are copied during the export phase of the build. This is accomplished by setting make variables telling the build system which module the headers are for (since headers are organized by module under <tt>dist/include</tt>), and which headers need to be created from IDL files by xpidl.
For all <tt>Makefile.in</tt>s which export public headers, you should set MODULE
to the module name where the files should be copied to in <tt>dist/include</tt>.
For normal headers that are to be exported, you should set EXPORTS
to the list of headers to be exported. They will be copied to <tt>dist/include/$(MODULE)</tt>.
For XPIDL-generated headers, you should set XPIDLSRCS
to the list of IDL files to export. These IDL files will be copied to <tt>dist/idl</tt>, and the generated headers will be copied to <tt>dist/include/$(MODULE)</tt>.
For XPIDL-generated headers, you may also set XPIDL_MODULE
to determine which
typelib
file is produced from the IDL files. The distinction between XPIDL_MODULE
and MODULE
is that each directory with IDL files must have a unique typelib file, but several directories may export headers to the same location. Here is an example <tt>Makefile.in</tt> which has both C++ and IDL headers:
MODULE = content XPIDL_MODULE = content_base EXPORTS = \ nsIContent.h \ nsIDocument.h \ nsIStyleSheet.h \ $(NULL) XPIDLSRCS = \ nsIContentPolicy.idl \ nsISelectionController.idl \ $(NULL) include $(topsrcdir)/config/rules.mk