
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.funtoo.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;feed=atom&amp;action=history</id>
		<title>Multiple ABI Support - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;action=history"/>
		<updated>2013-05-24T03:00:15Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.20.6</generator>

	<entry>
		<id>http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3152&amp;oldid=prev</id>
		<title>Drobbins at 05:01, 21 January 2012</title>
		<link rel="alternate" type="text/html" href="http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3152&amp;oldid=prev"/>
				<updated>2012-01-21T05:01:51Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 05:01, 21 January 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 116:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 116:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Internals]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Internals]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Portage]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Portage]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Featured]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:version:1.11a:oldid:3151:newid:3152 --&gt;
&lt;/table&gt;</summary>
		<author><name>Drobbins</name></author>	</entry>

	<entry>
		<id>http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3151&amp;oldid=prev</id>
		<title>Drobbins at 08:12, 29 December 2011</title>
		<link rel="alternate" type="text/html" href="http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3151&amp;oldid=prev"/>
				<updated>2011-12-29T08:12:40Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 08:12, 29 December 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 116:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 116:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Internals]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Internals]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Portage]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Portage]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Featured]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:version:1.11a:oldid:3150:newid:3151 --&gt;
&lt;/table&gt;</summary>
		<author><name>Drobbins</name></author>	</entry>

	<entry>
		<id>http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3150&amp;oldid=prev</id>
		<title>Drobbins at 01:24, 18 January 2011</title>
		<link rel="alternate" type="text/html" href="http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3150&amp;oldid=prev"/>
				<updated>2011-01-18T01:24:51Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 01:24, 18 January 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 115:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 115:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Internals]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Internals]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Portage]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:version:1.11a:oldid:3149:newid:3150 --&gt;
&lt;/table&gt;</summary>
		<author><name>Drobbins</name></author>	</entry>

	<entry>
		<id>http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3149&amp;oldid=prev</id>
		<title>Drobbins: /* Core ABI: econf() */</title>
		<link rel="alternate" type="text/html" href="http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3149&amp;oldid=prev"/>
				<updated>2011-01-01T19:17:22Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Core ABI: econf()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:17, 1 January 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: econf() ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: econf() ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Portage's &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; function has support for automatically specifying the proper &amp;lt;tt&amp;gt;--libdir=&amp;lt;/tt&amp;gt; setting to &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt; based on settings that are found in the system profile&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;. The algorithm is documented as &amp;quot;Algorithm 9&amp;quot; in the PMS specification&lt;/del&gt;. The intended purpose of automatically setting &amp;lt;tt&amp;gt;--libdir=&amp;lt;/tt&amp;gt; is designed so that 64-bit libraries will be installed into /usr/lib64 on multilib systems, and 32-bit libraries will be installed into /usr/lib32 on multilib systems, rather than simply installing these libraries into /usr/lib.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Portage's &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; function has support for automatically specifying the proper &amp;lt;tt&amp;gt;--libdir=&amp;lt;/tt&amp;gt; setting to &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt; based on settings that are found in the system profile. The intended purpose of automatically setting &amp;lt;tt&amp;gt;--libdir=&amp;lt;/tt&amp;gt; is designed so that 64-bit libraries will be installed into /usr/lib64 on multilib systems, and 32-bit libraries will be installed into /usr/lib32 on multilib systems, rather than simply installing these libraries into /usr/lib.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;While this functionality has questionable value for most normal ebuilds (since a library installed into /usr/lib will work just as well as one installed into /usr/lib64 on an amd64 multilib system,) this functionality likely comes in handy when building the app-emulation/emul-linux-x86-* binary library bundles to support 32-bit applications, as it allows the ABI to be set in the environment, and in combination with the gcc wrapper will cause 32-bit libraries to be built and installed to /usr/lib32.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;While this functionality has questionable value for most normal ebuilds (since a library installed into /usr/lib will work just as well as one installed into /usr/lib64 on an amd64 multilib system,) this functionality likely comes in handy when building the app-emulation/emul-linux-x86-* binary library bundles to support 32-bit applications, as it allows the ABI to be set in the environment, and in combination with the gcc wrapper will cause 32-bit libraries to be built and installed to /usr/lib32.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Drobbins</name></author>	</entry>

	<entry>
		<id>http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3148&amp;oldid=prev</id>
		<title>Ermo: /* Core ABI: Working Together */ Consistent terminology and markup.</title>
		<link rel="alternate" type="text/html" href="http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3148&amp;oldid=prev"/>
				<updated>2010-12-24T01:13:46Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Core ABI: Working Together: &lt;/span&gt; Consistent terminology and markup.&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 01:13, 24 December 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Working Together ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Working Together ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The algorithm used by &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; works as follows: A system profile (or the user, via the environment) sets the ABI variable to a value like &amp;lt;tt&amp;gt;amd64&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;x86&amp;lt;/tt&amp;gt;. A corresponding ABI-specific variable named &amp;lt;tt&amp;gt;LIBDIR_$ABI&amp;lt;/tt&amp;gt; (e.g. &amp;lt;tt&amp;gt;LIBDIR_x86&amp;lt;/tt&amp;gt;) will be used from the system profile, and will be set to either &amp;lt;tt&amp;gt;lib32&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lib64&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;. This will be used to define the target &amp;lt;tt&amp;gt;--libdir&amp;lt;/tt&amp;gt; setting used by &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt;. This will allow the system profile to control exactly where libraries are installed when building them for a particular ABI, as long as the ebuild author uses &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; (part of core Portage) or &amp;lt;tt&amp;gt;get_libdir()&amp;lt;/tt&amp;gt; (part of &amp;lt;tt&amp;gt;multilib.eclass&amp;lt;/tt&amp;gt;.) &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The algorithm used by &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; works as follows: A system profile (or the user, via the environment) sets the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;&lt;/ins&gt;ABI&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; &lt;/ins&gt;variable to a value like &amp;lt;tt&amp;gt;amd64&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;x86&amp;lt;/tt&amp;gt;. A corresponding ABI-specific variable named &amp;lt;tt&amp;gt;LIBDIR_$ABI&amp;lt;/tt&amp;gt; (e.g. &amp;lt;tt&amp;gt;LIBDIR_x86&amp;lt;/tt&amp;gt;) will be used from the system profile, and will be set to either &amp;lt;tt&amp;gt;lib32&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lib64&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;. This will be used to define the target &amp;lt;tt&amp;gt;--libdir&amp;lt;/tt&amp;gt; setting used by &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt;. This will allow the system profile to control exactly where libraries are installed when building them for a particular ABI, as long as the ebuild author uses &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; (part of core Portage) or &amp;lt;tt&amp;gt;get_libdir()&amp;lt;/tt&amp;gt; (part of &amp;lt;tt&amp;gt;multilib.eclass&amp;lt;/tt&amp;gt;.) &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In addition, the ABI variable set in the environment will cause the gcc-wrapper to adjust the &amp;lt;tt&amp;gt;CFLAGS&amp;lt;/tt&amp;gt; variable, by using &amp;lt;tt&amp;gt;CFLAGS_$ABI&amp;lt;/tt&amp;gt; to tell the multilib-aware gcc to target the alternate ABI. With ABI=&amp;quot;x86&amp;quot; on amd64 multilib systems, this will cause &amp;lt;tt&amp;gt;-m32&amp;lt;/tt&amp;gt; to be appended to the &amp;lt;tt&amp;gt;CFLAGS&amp;lt;/tt&amp;gt; variable, which will instruct gcc to produce 32-bit code.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In addition, the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;&lt;/ins&gt;ABI&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; &lt;/ins&gt;variable set in the environment will cause the gcc-wrapper to adjust the &amp;lt;tt&amp;gt;CFLAGS&amp;lt;/tt&amp;gt; variable, by using &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;the &lt;/ins&gt;&amp;lt;tt&amp;gt;CFLAGS_$ABI&amp;lt;/tt&amp;gt; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;variable &lt;/ins&gt;to tell the multilib-aware gcc to target the alternate ABI. With &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;&lt;/ins&gt;ABI=&amp;quot;x86&amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; &lt;/ins&gt;on amd64 multilib systems, this will cause &amp;lt;tt&amp;gt;-m32&amp;lt;/tt&amp;gt; to be appended to the &amp;lt;tt&amp;gt;CFLAGS&amp;lt;/tt&amp;gt; variable, which will instruct gcc to produce 32-bit code.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Demonstration ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Demonstration ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ermo</name></author>	</entry>

	<entry>
		<id>http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3147&amp;oldid=prev</id>
		<title>Ermo: /* Core ABI: Gcc Wrapper */ Omission.</title>
		<link rel="alternate" type="text/html" href="http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3147&amp;oldid=prev"/>
				<updated>2010-12-24T01:10:07Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Core ABI: Gcc Wrapper: &lt;/span&gt; Omission.&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 01:10, 24 December 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 17:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 17:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Gcc Wrapper ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Gcc Wrapper ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It is important to note that Gentoo Linux uses a ''gcc wrapper'' as a front-end for all calls to gcc, and this wrapper&amp;#160; is part of the sys-devel/gcc-config ebuild. One of the features of the wrapper is that it determines whether the &amp;lt;tt&amp;gt;ABI&amp;lt;/tt&amp;gt; variable has been defined in the environment, and if it has, the wrapper will automatically ensure that the &amp;lt;tt&amp;gt;CFLAGS&amp;lt;/tt&amp;gt; variable that the compiler sees is actually the &amp;lt;tt&amp;gt;CFLAGS_$ABI&amp;lt;/tt&amp;gt; variable, which originates from the system profile. On amd64 multilib systems, this means that a call to &amp;lt;tt&amp;gt;ABI=&amp;quot;x86&amp;quot; gcc&amp;lt;/tt&amp;gt; will result in an extra &amp;lt;tt&amp;gt;-m32&amp;lt;/tt&amp;gt; option being passed to gcc to force it to produce 32-bit code. The &amp;lt;tt&amp;gt;-m32&amp;lt;/tt&amp;gt; option will generally not appear in the build log, which cause some confusion for developers. This is a critical component of the multiple ABI support in Gentoo and Funtoo Linux.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It is important to note that Gentoo Linux uses a ''gcc wrapper'' as a front-end for all calls to gcc, and this wrapper&amp;#160; is part of the sys-devel/gcc-config ebuild. One of the features of the wrapper is that it determines whether the &amp;lt;tt&amp;gt;ABI&amp;lt;/tt&amp;gt; variable has been defined in the environment, and if it has, the wrapper will automatically ensure that the &amp;lt;tt&amp;gt;CFLAGS&amp;lt;/tt&amp;gt; variable that the compiler sees is actually the &amp;lt;tt&amp;gt;CFLAGS_$ABI&amp;lt;/tt&amp;gt; variable, which originates from the system profile. On amd64 multilib systems, this means that a call to &amp;lt;tt&amp;gt;ABI=&amp;quot;x86&amp;quot; gcc&amp;lt;/tt&amp;gt; will result in an extra &amp;lt;tt&amp;gt;-m32&amp;lt;/tt&amp;gt; option being passed to gcc to force it to produce 32-bit code. The &amp;lt;tt&amp;gt;-m32&amp;lt;/tt&amp;gt; option will generally not appear in the build log, which &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;may &lt;/ins&gt;cause some confusion for developers. This is a critical component of the multiple ABI support in Gentoo and Funtoo Linux.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Working Together ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Working Together ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ermo</name></author>	</entry>

	<entry>
		<id>http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3146&amp;oldid=prev</id>
		<title>Ermo: /* Core ABI: Gcc Wrapper */ Slight rewording, updated markup.</title>
		<link rel="alternate" type="text/html" href="http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3146&amp;oldid=prev"/>
				<updated>2010-12-24T01:06:14Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Core ABI: Gcc Wrapper: &lt;/span&gt; Slight rewording, updated markup.&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 01:06, 24 December 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 17:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 17:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Gcc Wrapper ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Gcc Wrapper ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It is important to note that Gentoo Linux uses a ''gcc wrapper'' as a front-end for all calls to gcc, and this wrapper&amp;#160; is part of the sys-devel/gcc-config ebuild. One of the features of the wrapper is that it &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;looks for &lt;/del&gt;ABI &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;being &lt;/del&gt;defined in the environment, and if it &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;it &lt;/del&gt;will automatically ensure that the CFLAGS &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;value &lt;/del&gt;that the compiler sees is actually the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;setting of &lt;/del&gt;CFLAGS_$ABI &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;in the environment&lt;/del&gt;, which originates from the system profile. On amd64 multilib systems, this means that a call to &amp;lt;tt&amp;gt;ABI=&amp;quot;x86&amp;quot; gcc&amp;lt;/tt&amp;gt; will result in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the compiler being passed &lt;/del&gt;an extra &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;&lt;/del&gt;-m32&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot; &lt;/del&gt;option to force 32-bit code. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This &lt;/del&gt;-m32 option will generally not appear in the build log, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;so it may be confusing &lt;/del&gt;for developers. This is a critical component of the multiple ABI support in Gentoo and Funtoo Linux.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It is important to note that Gentoo Linux uses a ''gcc wrapper'' as a front-end for all calls to gcc, and this wrapper&amp;#160; is part of the sys-devel/gcc-config ebuild. One of the features of the wrapper is that it &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;determines whether the &amp;lt;tt&amp;gt;&lt;/ins&gt;ABI&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; variable has been &lt;/ins&gt;defined in the environment, and if it &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;has&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;the wrapper &lt;/ins&gt;will automatically ensure that the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;&lt;/ins&gt;CFLAGS&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; variable &lt;/ins&gt;that the compiler sees is actually the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;&lt;/ins&gt;CFLAGS_$ABI&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; variable&lt;/ins&gt;, which originates from the system profile. On amd64 multilib systems, this means that a call to &amp;lt;tt&amp;gt;ABI=&amp;quot;x86&amp;quot; gcc&amp;lt;/tt&amp;gt; will result in an extra &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;&lt;/ins&gt;-m32&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; &lt;/ins&gt;option &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;being passed to gcc &lt;/ins&gt;to force &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;it to produce &lt;/ins&gt;32-bit code. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;The &amp;lt;tt&amp;gt;&lt;/ins&gt;-m32&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; &lt;/ins&gt;option will generally not appear in the build log, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;which cause some confusion &lt;/ins&gt;for developers. This is a critical component of the multiple ABI support in Gentoo and Funtoo Linux.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Working Together ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Working Together ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ermo</name></author>	</entry>

	<entry>
		<id>http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3145&amp;oldid=prev</id>
		<title>Ermo: /* Core ABI: Working Together */  Markup tweak.</title>
		<link rel="alternate" type="text/html" href="http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3145&amp;oldid=prev"/>
				<updated>2010-12-24T01:00:28Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Core ABI: Working Together: &lt;/span&gt;  Markup tweak.&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 01:00, 24 December 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 23:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 23:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The algorithm used by &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; works as follows: A system profile (or the user, via the environment) sets the ABI variable to a value like &amp;lt;tt&amp;gt;amd64&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;x86&amp;lt;/tt&amp;gt;. A corresponding ABI-specific variable named &amp;lt;tt&amp;gt;LIBDIR_$ABI&amp;lt;/tt&amp;gt; (e.g. &amp;lt;tt&amp;gt;LIBDIR_x86&amp;lt;/tt&amp;gt;) will be used from the system profile, and will be set to either &amp;lt;tt&amp;gt;lib32&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lib64&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;. This will be used to define the target &amp;lt;tt&amp;gt;--libdir&amp;lt;/tt&amp;gt; setting used by &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt;. This will allow the system profile to control exactly where libraries are installed when building them for a particular ABI, as long as the ebuild author uses &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; (part of core Portage) or &amp;lt;tt&amp;gt;get_libdir()&amp;lt;/tt&amp;gt; (part of &amp;lt;tt&amp;gt;multilib.eclass&amp;lt;/tt&amp;gt;.) &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The algorithm used by &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; works as follows: A system profile (or the user, via the environment) sets the ABI variable to a value like &amp;lt;tt&amp;gt;amd64&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;x86&amp;lt;/tt&amp;gt;. A corresponding ABI-specific variable named &amp;lt;tt&amp;gt;LIBDIR_$ABI&amp;lt;/tt&amp;gt; (e.g. &amp;lt;tt&amp;gt;LIBDIR_x86&amp;lt;/tt&amp;gt;) will be used from the system profile, and will be set to either &amp;lt;tt&amp;gt;lib32&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lib64&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;. This will be used to define the target &amp;lt;tt&amp;gt;--libdir&amp;lt;/tt&amp;gt; setting used by &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt;. This will allow the system profile to control exactly where libraries are installed when building them for a particular ABI, as long as the ebuild author uses &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; (part of core Portage) or &amp;lt;tt&amp;gt;get_libdir()&amp;lt;/tt&amp;gt; (part of &amp;lt;tt&amp;gt;multilib.eclass&amp;lt;/tt&amp;gt;.) &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In addition, the ABI variable set in the environment will cause the gcc-wrapper to adjust the &amp;lt;tt&amp;gt;CFLAGS&amp;lt;/tt&amp;gt; variable, by using &amp;lt;tt&amp;gt;CFLAGS_$ABI&amp;lt;/tt&amp;gt; to tell the multilib-aware gcc to target the alternate ABI. With ABI=&amp;quot;x86&amp;quot; on amd64 multilib systems, this will cause &amp;lt;tt&amp;gt;-m32&amp;lt;/tt&amp;gt; to be appended to the CFLAGS variable, which will instruct gcc to produce 32-bit code.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In addition, the ABI variable set in the environment will cause the gcc-wrapper to adjust the &amp;lt;tt&amp;gt;CFLAGS&amp;lt;/tt&amp;gt; variable, by using &amp;lt;tt&amp;gt;CFLAGS_$ABI&amp;lt;/tt&amp;gt; to tell the multilib-aware gcc to target the alternate ABI. With ABI=&amp;quot;x86&amp;quot; on amd64 multilib systems, this will cause &amp;lt;tt&amp;gt;-m32&amp;lt;/tt&amp;gt; to be appended to the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;tt&amp;gt;&lt;/ins&gt;CFLAGS&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/tt&amp;gt; &lt;/ins&gt;variable, which will instruct gcc to produce 32-bit code.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Demonstration ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Demonstration ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ermo</name></author>	</entry>

	<entry>
		<id>http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3144&amp;oldid=prev</id>
		<title>Ermo: /* Core ABI: Working Together */  Various small cleanups/tweaks.</title>
		<link rel="alternate" type="text/html" href="http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3144&amp;oldid=prev"/>
				<updated>2010-12-24T00:59:46Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Core ABI: Working Together: &lt;/span&gt;  Various small cleanups/tweaks.&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 00:59, 24 December 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Working Together ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Working Together ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The algorithm used by &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; works as follows&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;. &lt;/del&gt;A system profile (or the user, via the environment) &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;will set &lt;/del&gt;the ABI variable to a value like &amp;lt;tt&amp;gt;amd64&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;x86&amp;lt;/tt&amp;gt;. A corresponding ABI-specific variable named &amp;lt;tt&amp;gt;LIBDIR_$ABI&amp;lt;/tt&amp;gt; (&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;i.&lt;/del&gt;e. &amp;lt;tt&amp;gt;LIBDIR_x86&amp;lt;/tt&amp;gt;) will be used from the system profile, and will be set to either &amp;lt;tt&amp;gt;lib32&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lib64&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;. This will be used to define the target &amp;lt;tt&amp;gt;--libdir&amp;lt;/tt&amp;gt; setting used by &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt;. This will allow the system profile to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;direct &lt;/del&gt;exactly where libraries are installed when building them for a particular ABI, as long as the ebuild &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;writer usese &lt;/del&gt;&amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; (part of core Portage) or &amp;lt;tt&amp;gt;get_libdir()&amp;lt;/tt&amp;gt; (part of &amp;lt;tt&amp;gt;multilib.eclass&amp;lt;/tt&amp;gt;.) &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The algorithm used by &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; works as follows&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;: &lt;/ins&gt;A system profile (or the user, via the environment) &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;sets &lt;/ins&gt;the ABI variable to a value like &amp;lt;tt&amp;gt;amd64&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;x86&amp;lt;/tt&amp;gt;. A corresponding ABI-specific variable named &amp;lt;tt&amp;gt;LIBDIR_$ABI&amp;lt;/tt&amp;gt; (e&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;.g&lt;/ins&gt;. &amp;lt;tt&amp;gt;LIBDIR_x86&amp;lt;/tt&amp;gt;) will be used from the system profile, and will be set to either &amp;lt;tt&amp;gt;lib32&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;lib64&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;. This will be used to define the target &amp;lt;tt&amp;gt;--libdir&amp;lt;/tt&amp;gt; setting used by &amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt;. This will allow the system profile to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;control &lt;/ins&gt;exactly where libraries are installed when building them for a particular ABI, as long as the ebuild &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;author uses &lt;/ins&gt;&amp;lt;tt&amp;gt;econf()&amp;lt;/tt&amp;gt; (part of core Portage) or &amp;lt;tt&amp;gt;get_libdir()&amp;lt;/tt&amp;gt; (part of &amp;lt;tt&amp;gt;multilib.eclass&amp;lt;/tt&amp;gt;.) &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In addition, the ABI variable &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;is &lt;/del&gt;set in the environment will cause the gcc-wrapper &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;will &lt;/del&gt;adjust &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;its &lt;/del&gt;&amp;lt;tt&amp;gt;CFLAGS&amp;lt;/tt&amp;gt; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;settings&lt;/del&gt;, by using &amp;lt;tt&amp;gt;CFLAGS_$ABI&amp;lt;/tt&amp;gt; to tell the multilib-aware gcc to target the alternate ABI. With ABI=&amp;quot;x86&amp;quot; on amd64 multilib systems, this will cause &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;CFLAGS to have an &lt;/del&gt;&amp;lt;tt&amp;gt;-m32&amp;lt;/tt&amp;gt; to be appended to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;it&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;to &lt;/del&gt;instruct &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the compiler &lt;/del&gt;to produce 32-bit code.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In addition, the ABI variable set in the environment will cause the gcc-wrapper &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;to &lt;/ins&gt;adjust &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;the &lt;/ins&gt;&amp;lt;tt&amp;gt;CFLAGS&amp;lt;/tt&amp;gt; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;variable&lt;/ins&gt;, by using &amp;lt;tt&amp;gt;CFLAGS_$ABI&amp;lt;/tt&amp;gt; to tell the multilib-aware gcc to target the alternate ABI. With ABI=&amp;quot;x86&amp;quot; on amd64 multilib systems, this will cause &amp;lt;tt&amp;gt;-m32&amp;lt;/tt&amp;gt; to be appended to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;the CFLAGS variable&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;which will &lt;/ins&gt;instruct &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;gcc &lt;/ins&gt;to produce 32-bit code.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Demonstration ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: Demonstration ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:version:1.11a:oldid:3143:newid:3144 --&gt;
&lt;/table&gt;</summary>
		<author><name>Ermo</name></author>	</entry>

	<entry>
		<id>http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3143&amp;oldid=prev</id>
		<title>Drobbins: /* Core ABI Support */</title>
		<link rel="alternate" type="text/html" href="http://www.funtoo.org/index.php?title=Multiple_ABI_Support&amp;diff=3143&amp;oldid=prev"/>
				<updated>2010-12-23T05:30:14Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Core ABI Support&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 05:30, 23 December 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Portage and some system profiles currently contain a very small set of changes so that multiple ABIs can be targeted by Portage. In addition, Gentoo's gcc &amp;quot;wrapper&amp;quot; (part of sys-devel/gcc-config) has a key feature in it to enable this multiple ABI support -- this functionality is detailed later in this section. This implements the core minimal multiple ABI functionality.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Portage and some system profiles currently contain a very small set of changes so that multiple ABIs can be targeted by Portage. In addition, Gentoo's gcc &amp;quot;wrapper&amp;quot; (part of sys-devel/gcc-config) has a key feature in it to enable this multiple ABI support -- this functionality is detailed later in this section. This implements the core minimal multiple ABI functionality.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In practice, this capability, combined with the gcc-wrapper's ABI support, can come in handy for directing Portage to build libraries for the non-default ABI, using the appropriate directories so that &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;this ebuild &lt;/del&gt;can be manually installed on your system without overwriting the libraries for the default ABI. An example of this approach is documented later in this section. This support is also useful when it is necessary to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;build &lt;/del&gt;32-bit versions of some applications that may not be compatible with 64-bit multilib systems, and &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;also allows &lt;/del&gt;for the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;possibility of an &lt;/del&gt;ebuild &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;compiling &lt;/del&gt;both 32-bit and 64-bit versions of certain applications when necessary.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In practice, this capability, combined with the gcc-wrapper's ABI support, can come in handy for directing Portage to build libraries for the non-default ABI, using the appropriate directories so that &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;the resultant .tbz2 file &lt;/ins&gt;can be manually installed on your system without overwriting the libraries for the default ABI. An example of this approach is documented later in this section. This support is also useful when it is necessary &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;for the ebuild to direct the system &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;create &lt;/ins&gt;32-bit versions of some applications that may not be compatible with 64-bit multilib systems, and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;supports the ability &lt;/ins&gt;for the ebuild &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;to reliably compile &lt;/ins&gt;both 32-bit and 64-bit versions of certain applications when necessary.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: econf() ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Core ABI: econf() ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:version:1.11a:oldid:3142:newid:3143 --&gt;
&lt;/table&gt;</summary>
		<author><name>Drobbins</name></author>	</entry>

	</feed>