mozilla

Revision 137710 of XPCOM ABI

  • Revision slug: XPCOM_ABI
  • Revision title: XPCOM ABI
  • Revision id: 137710
  • Created:
  • Creator: Nickolay
  • Is current revision? No
  • Comment
Tags: 

Revision Content

TARGET_XPCOM_ABI is a string which indicates the binary interface of XPCOM components that would be compatible with a certain build of Firefox, Thunderbird or other XULRunner application.

At build time of the application (e.g. Firefox), this string is generated and embedded into it. Later on, it could use this value to check compatibility with third-party binary (i.e. not written in a scripting language) XPCOM components.

A common point of compatibility check is during the installation of extensions. If an extension provides binary XPCOM components, it should declare their XPCOM ABI in the Install Manifest. The application will refuse to install incompatible extensions.

The format of the string is:

{CPU_ARCH}[-{TARGET_COMPILER_ABI}]

{CPU_ARCH} represents the CPU architecture and may be either:

  • x86 - i386 and higher series (including x86-64 in 32-bit mode)
  • ppc - PowerPC series
  • Alpha - Alpha series
  • x86_64 - AMD64/EMT64 series in 64-bit mode (32-bit mode is still considered x86)
  • sparc - SPARC series
  • ia64 - Itanium series

{TARGET_COMPILER_ABI} represents the compiler ABI and may be either:

  • msvc - Microsoft Visual C++
  • n32 - IRIX 6 C++ Compiler
  • gcc2 - GNU C++ Compiler 2.x
  • gcc3 - GNU C++ Compiler 3.x or 4.x

For other compilers, this value is ommited, along with the preceding dash.

For example:

  • Firefox built with the GNU C++ Compiler 4.0.0 for the Pentium processor would have TARGET_XPCOM_ABI = x86-gcc3
  • Thunderbird built with the Sun C++ Compiler for the SPARC processor would have TARGET_XPCOM_ABI = sparc

Note: This is not an exhaustive list of possible CPU architectures and compiler ABIs. Newest information can always be found by exploring the build system.

Revision Source

<p>TARGET_XPCOM_ABI is a string which indicates the binary interface of XPCOM components that would be compatible with a certain build of Firefox, Thunderbird or other XULRunner application.
</p><p>At build time of the application (e.g. Firefox), this string is generated and embedded into it. Later on, it could use this value to check compatibility with third-party binary (i.e. not written in a scripting language) XPCOM components.
</p><p>A common point of compatibility check is during the installation of extensions. If an extension provides binary XPCOM components, it should declare their XPCOM ABI in the <a href="en/Install_Manifests#targetPlatform">Install Manifest</a>. The application will refuse to install incompatible extensions.
</p><p>The format of the string is:
</p>
<pre class="eval"><i>{CPU_ARCH}</i>[-<i>{TARGET_COMPILER_ABI}</i>]
</pre>
<p><i>{CPU_ARCH}</i> represents the CPU architecture and may be either:
</p>
<ul><li> <i>x86</i> - i386 and higher series (including x86-64 in 32-bit mode)
</li><li> <i>ppc</i> - PowerPC series
</li><li> <i>Alpha</i> - Alpha series
</li><li> <i>x86_64</i> - AMD64/EMT64 series in 64-bit mode (32-bit mode is still considered <i>x86</i>)
</li><li> <i>sparc</i> - SPARC series
</li><li> <i>ia64</i> - Itanium series
</li></ul>
<p><i>{TARGET_COMPILER_ABI}</i> represents the compiler ABI and may be either:
</p>
<ul><li> <i>msvc</i> - Microsoft Visual C++
</li><li> <i>n32</i> - IRIX 6 C++ Compiler
</li><li> <i>gcc2</i> - GNU C++ Compiler 2.x
</li><li> <i>gcc3</i> - GNU C++ Compiler 3.x or 4.x
</li></ul>
<p>For other compilers, this value is ommited, along with the preceding dash.
</p><p>For example:
</p>
<ul><li> Firefox built with the GNU C++ Compiler 4.0.0 for the Pentium processor would have TARGET_XPCOM_ABI = <code>x86-gcc3</code>
</li><li> Thunderbird built with the Sun C++ Compiler for the SPARC processor would have TARGET_XPCOM_ABI = <code>sparc</code>
</li></ul>
<p>Note: This is not an exhaustive list of possible CPU architectures and compiler ABIs. Newest information can always be found by exploring the build system.
</p>
Revert to this revision