MDN may have intermittent access issues April 18 13:00 - April 19 01:00 UTC. See whistlepig.mozilla.org for all notifications.

mozilla

Revision 137713 of XPCOM ABI

  • Revision slug: XPCOM_ABI
  • Revision title: XPCOM ABI
  • Revision id: 137713
  • Created:
  • Creator: Ikonst
  • 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. An extension author may build (compile) the XPCOM component for each and every supported machine and pack all the builds into a single XPI, each into its distinctive platform-specific subdirectory. At extension installation time, the application will choose the most fitting component build for its own ABI. If no such build is found, the extension will be deemed incompatible and the application will refuse to install it.

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>. An extension author may build (compile) the XPCOM component for each and every supported machine and pack all the builds into a single XPI, each into its distinctive <a href="en/Bundles#Platform-specific_subdirectories">platform-specific subdirectory</a>. At extension installation time, the application will choose the most fitting component build for its own ABI. If no such build is found, the extension will be deemed incompatible and the application will refuse to install it.
</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> <code>x86</code> - i386 and higher series (including x86-64 in 32-bit mode)
</li><li> <code>ppc</code> - PowerPC series
</li><li> <code>Alpha</code> - Alpha series
</li><li> <code>x86_64</code> - AMD64/EMT64 series in 64-bit mode (32-bit mode is still considered <code>x86</code>)
</li><li> <code>sparc</code> - SPARC series
</li><li> <code>ia64</code> - Itanium series
</li></ul>
<p><i>{TARGET_COMPILER_ABI}</i> represents the compiler ABI and may be either:
</p>
<ul><li> <code>msvc</code> - Microsoft Visual C++
</li><li> <code>n32</code> - IRIX 6 C++ Compiler
</li><li> <code>gcc2</code> - GNU C++ Compiler 2.x
</li><li> <code>gcc3</code> - 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