summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Groffen <grobian@gentoo.org>2010-03-08 17:12:14 +0000
committerFabian Groffen <grobian@gentoo.org>2010-03-08 17:12:14 +0000
commit67fd08f08c5cc5097ac83a3ff16f42a63cf18b91 (patch)
tree28ee70c9486b78c6f8cbdca7ef0485d4f5910aeb /sys-devel/gcc-apple
parentStable on amd64 wrt bug #305923 (diff)
downloadgentoo-2-67fd08f08c5cc5097ac83a3ff16f42a63cf18b91.tar.gz
gentoo-2-67fd08f08c5cc5097ac83a3ff16f42a63cf18b91.tar.bz2
gentoo-2-67fd08f08c5cc5097ac83a3ff16f42a63cf18b91.zip
Ported all ebuilds to EAPI=3, bump to Dev Tools 3.2.1, 5646.1 as 5647 (hack), update gfortran support, use version 4.2.4 for latest ebuild since ATTR seems to be doing that too, hopefully for a good reason. Put back stdc++-v3 into the gcc tree so we don't have to configure/make twice (necessary even for EAPI=2+). Sed Gentoo version into version string, so our compilers are identifyable, let bugs url point to our bugzilla.
(Portage version: 2.2.00.15753-prefix/cvs/Darwin powerpc)
Diffstat (limited to 'sys-devel/gcc-apple')
-rw-r--r--sys-devel/gcc-apple/ChangeLog19
-rw-r--r--sys-devel/gcc-apple/files/gcc-apple-4.2.1_p5646-gfortran.patch797
-rw-r--r--sys-devel/gcc-apple/gcc-apple-3.5.0_p3506-r1.ebuild23
-rw-r--r--sys-devel/gcc-apple/gcc-apple-4.0.1_p5490-r2.ebuild31
-rw-r--r--sys-devel/gcc-apple/gcc-apple-4.0.1_p5493.ebuild31
-rw-r--r--sys-devel/gcc-apple/gcc-apple-4.2.1_p5566-r2.ebuild61
-rw-r--r--sys-devel/gcc-apple/gcc-apple-4.2.1_p5574.ebuild64
-rw-r--r--sys-devel/gcc-apple/gcc-apple-4.2.1_p5646.ebuild80
-rw-r--r--sys-devel/gcc-apple/gcc-apple-4.2.1_p5647.ebuild327
9 files changed, 1294 insertions, 139 deletions
diff --git a/sys-devel/gcc-apple/ChangeLog b/sys-devel/gcc-apple/ChangeLog
index b4c41711dab9..a36105d6b92a 100644
--- a/sys-devel/gcc-apple/ChangeLog
+++ b/sys-devel/gcc-apple/ChangeLog
@@ -1,6 +1,21 @@
# ChangeLog for sys-devel/gcc-apple
-# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/ChangeLog,v 1.10 2009/09/25 20:34:17 grobian Exp $
+# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/ChangeLog,v 1.11 2010/03/08 17:12:11 grobian Exp $
+
+*gcc-apple-4.2.1_p5647 (08 Mar 2010)
+
+ 08 Mar 2010; Fabian Groffen <grobian@gentoo.org>
+ gcc-apple-3.5.0_p3506-r1.ebuild, gcc-apple-4.0.1_p5490-r2.ebuild,
+ gcc-apple-4.0.1_p5493.ebuild, gcc-apple-4.2.1_p5566-r2.ebuild,
+ gcc-apple-4.2.1_p5574.ebuild, gcc-apple-4.2.1_p5646.ebuild,
+ +gcc-apple-4.2.1_p5647.ebuild,
+ +files/gcc-apple-4.2.1_p5646-gfortran.patch:
+ Ported all ebuilds to EAPI=3, bump to Dev Tools 3.2.1, 5646.1 as 5647
+ (hack), update gfortran support, use version 4.2.4 for latest ebuild since
+ ATTR seems to be doing that too, hopefully for a good reason. Put back
+ stdc++-v3 into the gcc tree so we don't have to configure/make twice
+ (necessary even for EAPI=2+). Sed Gentoo version into version string, so
+ our compilers are identifyable, let bugs url point to our bugzilla.
25 Sep 2009; Fabian Groffen <grobian@gentoo.org>
gcc-apple-4.2.1_p5574.ebuild, -files/gcc-apple-4.2.1_p5574-darwin10.patch:
diff --git a/sys-devel/gcc-apple/files/gcc-apple-4.2.1_p5646-gfortran.patch b/sys-devel/gcc-apple/files/gcc-apple-4.2.1_p5646-gfortran.patch
new file mode 100644
index 000000000000..61176c0f68b7
--- /dev/null
+++ b/sys-devel/gcc-apple/files/gcc-apple-4.2.1_p5646-gfortran.patch
@@ -0,0 +1,797 @@
+extracted diff from sources at:
+ http://r.research.att.com/src/gcc/
+compared to GNU GCC fortran 4.2.4
+and Apple GCC 5646
+
+with modification in disable_typechecking_for_spec_flag to allow linking
+to succeed (ld: duplicate symbol _disable_typechecking_for_spec_flag in
+libbackend.a(rs6000.o) and c-common.o)
+
+--- gcc-5646/gcc/fortran/Make-lang.in
++++ gcc-5646/gcc/fortran/Make-lang.in
+@@ -73,7 +73,7 @@
+ fortran/trans.o fortran/trans-array.o fortran/trans-common.o \
+ fortran/trans-const.o fortran/trans-decl.o fortran/trans-expr.o \
+ fortran/trans-intrinsic.o fortran/trans-io.o fortran/trans-openmp.o \
+- fortran/trans-stmt.o fortran/trans-types.o
++ fortran/trans-stmt.o fortran/trans-types.o fortran/fake.o
+
+ # GFORTRAN uses GMP for its internal arithmetics.
+ F95_LIBS = $(GMPLIBS) $(LIBS)
+@@ -106,7 +106,7 @@
+ f951$(exeext): $(F95_OBJS) \
+ $(BACKEND) $(LIBDEPS)
+ $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \
+- $(F95_OBJS) $(BACKEND) $(F95_LIBS)
++ $(F95_OBJS) $(BACKEND) $(F95_LIBS) stub-objc.o
+
+ gt-fortran-trans.h : s-gtype; @true
+ #
+--- gcc-5646/gcc/fortran/fake.c
++++ gcc-5646/gcc/fortran/fake.c
+@@ -0,0 +1,29 @@
++#include <stdlib.h>
++#include <stdio.h>
++
++#define MK_FAKE(X) void X (void); void X (void) { fprintf(stderr, "** FATAL: call to an unsupported function!\n"); exit(1); }
++
++int c_language = 0; /* 0 is C which is the default */
++int disable_typechecking_for_spec_flag = 0;
++
++MK_FAKE(build_function_call)
++MK_FAKE(build_modify_expr)
++MK_FAKE(build_stmt)
++MK_FAKE(decl_attributes)
++MK_FAKE(decl_constant_value)
++MK_FAKE(flag_iasm_blocks)
++MK_FAKE(iasm_addr)
++MK_FAKE(iasm_build_bracket)
++MK_FAKE(iasm_force_constraint)
++MK_FAKE(iasm_get_register_var)
++MK_FAKE(iasm_in_operands)
++MK_FAKE(iasm_is_pseudo)
++MK_FAKE(iasm_print_operand)
++MK_FAKE(iasm_state)
++MK_FAKE(lookup_name)
++MK_FAKE(parse_in)
++MK_FAKE(pointer_int_sum)
++MK_FAKE(store_init_value)
++
++/* this is new in Xcode 3.2 and may cause problems */
++MK_FAKE(create_init_utf16_var)
+--- gcc-5646/gcc/doc/include/gpl_v3.texi
++++ gcc-5646/gcc/doc/include/gpl_v3.texi
+@@ -0,0 +1,733 @@
++@ignore
++@c Set file name and title for man page.
++@setfilename gpl
++@settitle GNU General Public License
++@c man begin SEEALSO
++gfdl(7), fsf-funding(7).
++@c man end
++@c man begin COPYRIGHT
++Copyright @copyright{} 2007 Free Software Foundation, Inc.
++
++Everyone is permitted to copy and distribute verbatim copies of this
++license document, but changing it is not allowed.
++@c man end
++@end ignore
++@node Copying
++@c man begin DESCRIPTION
++@unnumbered GNU General Public License
++@center Version 3, 29 June 2007
++
++@c This file is intended to be included in another file.
++
++@display
++Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/}
++
++Everyone is permitted to copy and distribute verbatim copies of this
++license document, but changing it is not allowed.
++@end display
++
++@heading Preamble
++
++The GNU General Public License is a free, copyleft license for
++software and other kinds of works.
++
++The licenses for most software and other practical works are designed
++to take away your freedom to share and change the works. By contrast,
++the GNU General Public License is intended to guarantee your freedom
++to share and change all versions of a program--to make sure it remains
++free software for all its users. We, the Free Software Foundation,
++use the GNU General Public License for most of our software; it
++applies also to any other work released this way by its authors. You
++can apply it to your programs, too.
++
++When we speak of free software, we are referring to freedom, not
++price. Our General Public Licenses are designed to make sure that you
++have the freedom to distribute copies of free software (and charge for
++them if you wish), that you receive source code or can get it if you
++want it, that you can change the software or use pieces of it in new
++free programs, and that you know you can do these things.
++
++To protect your rights, we need to prevent others from denying you
++these rights or asking you to surrender the rights. Therefore, you
++have certain responsibilities if you distribute copies of the
++software, or if you modify it: responsibilities to respect the freedom
++of others.
++
++For example, if you distribute copies of such a program, whether
++gratis or for a fee, you must pass on to the recipients the same
++freedoms that you received. You must make sure that they, too,
++receive or can get the source code. And you must show them these
++terms so they know their rights.
++
++Developers that use the GNU GPL protect your rights with two steps:
++(1) assert copyright on the software, and (2) offer you this License
++giving you legal permission to copy, distribute and/or modify it.
++
++For the developers' and authors' protection, the GPL clearly explains
++that there is no warranty for this free software. For both users' and
++authors' sake, the GPL requires that modified versions be marked as
++changed, so that their problems will not be attributed erroneously to
++authors of previous versions.
++
++Some devices are designed to deny users access to install or run
++modified versions of the software inside them, although the
++manufacturer can do so. This is fundamentally incompatible with the
++aim of protecting users' freedom to change the software. The
++systematic pattern of such abuse occurs in the area of products for
++individuals to use, which is precisely where it is most unacceptable.
++Therefore, we have designed this version of the GPL to prohibit the
++practice for those products. If such problems arise substantially in
++other domains, we stand ready to extend this provision to those
++domains in future versions of the GPL, as needed to protect the
++freedom of users.
++
++Finally, every program is threatened constantly by software patents.
++States should not allow patents to restrict development and use of
++software on general-purpose computers, but in those that do, we wish
++to avoid the special danger that patents applied to a free program
++could make it effectively proprietary. To prevent this, the GPL
++assures that patents cannot be used to render the program non-free.
++
++The precise terms and conditions for copying, distribution and
++modification follow.
++
++@heading TERMS AND CONDITIONS
++
++@enumerate 0
++@item Definitions.
++
++``This License'' refers to version 3 of the GNU General Public License.
++
++``Copyright'' also means copyright-like laws that apply to other kinds
++of works, such as semiconductor masks.
++
++``The Program'' refers to any copyrightable work licensed under this
++License. Each licensee is addressed as ``you''. ``Licensees'' and
++``recipients'' may be individuals or organizations.
++
++To ``modify'' a work means to copy from or adapt all or part of the work
++in a fashion requiring copyright permission, other than the making of
++an exact copy. The resulting work is called a ``modified version'' of
++the earlier work or a work ``based on'' the earlier work.
++
++A ``covered work'' means either the unmodified Program or a work based
++on the Program.
++
++To ``propagate'' a work means to do anything with it that, without
++permission, would make you directly or secondarily liable for
++infringement under applicable copyright law, except executing it on a
++computer or modifying a private copy. Propagation includes copying,
++distribution (with or without modification), making available to the
++public, and in some countries other activities as well.
++
++To ``convey'' a work means any kind of propagation that enables other
++parties to make or receive copies. Mere interaction with a user
++through a computer network, with no transfer of a copy, is not
++conveying.
++
++An interactive user interface displays ``Appropriate Legal Notices'' to
++the extent that it includes a convenient and prominently visible
++feature that (1) displays an appropriate copyright notice, and (2)
++tells the user that there is no warranty for the work (except to the
++extent that warranties are provided), that licensees may convey the
++work under this License, and how to view a copy of this License. If
++the interface presents a list of user commands or options, such as a
++menu, a prominent item in the list meets this criterion.
++
++@item Source Code.
++
++The ``source code'' for a work means the preferred form of the work for
++making modifications to it. ``Object code'' means any non-source form
++of a work.
++
++A ``Standard Interface'' means an interface that either is an official
++standard defined by a recognized standards body, or, in the case of
++interfaces specified for a particular programming language, one that
++is widely used among developers working in that language.
++
++The ``System Libraries'' of an executable work include anything, other
++than the work as a whole, that (a) is included in the normal form of
++packaging a Major Component, but which is not part of that Major
++Component, and (b) serves only to enable use of the work with that
++Major Component, or to implement a Standard Interface for which an
++implementation is available to the public in source code form. A
++``Major Component'', in this context, means a major essential component
++(kernel, window system, and so on) of the specific operating system
++(if any) on which the executable work runs, or a compiler used to
++produce the work, or an object code interpreter used to run it.
++
++The ``Corresponding Source'' for a work in object code form means all
++the source code needed to generate, install, and (for an executable
++work) run the object code and to modify the work, including scripts to
++control those activities. However, it does not include the work's
++System Libraries, or general-purpose tools or generally available free
++programs which are used unmodified in performing those activities but
++which are not part of the work. For example, Corresponding Source
++includes interface definition files associated with source files for
++the work, and the source code for shared libraries and dynamically
++linked subprograms that the work is specifically designed to require,
++such as by intimate data communication or control flow between those
++subprograms and other parts of the work.
++
++The Corresponding Source need not include anything that users can
++regenerate automatically from other parts of the Corresponding Source.
++
++The Corresponding Source for a work in source code form is that same
++work.
++
++@item Basic Permissions.
++
++All rights granted under this License are granted for the term of
++copyright on the Program, and are irrevocable provided the stated
++conditions are met. This License explicitly affirms your unlimited
++permission to run the unmodified Program. The output from running a
++covered work is covered by this License only if the output, given its
++content, constitutes a covered work. This License acknowledges your
++rights of fair use or other equivalent, as provided by copyright law.
++
++You may make, run and propagate covered works that you do not convey,
++without conditions so long as your license otherwise remains in force.
++You may convey covered works to others for the sole purpose of having
++them make modifications exclusively for you, or provide you with
++facilities for running those works, provided that you comply with the
++terms of this License in conveying all material for which you do not
++control copyright. Those thus making or running the covered works for
++you must do so exclusively on your behalf, under your direction and
++control, on terms that prohibit them from making any copies of your
++copyrighted material outside their relationship with you.
++
++Conveying under any other circumstances is permitted solely under the
++conditions stated below. Sublicensing is not allowed; section 10
++makes it unnecessary.
++
++@item Protecting Users' Legal Rights From Anti-Circumvention Law.
++
++No covered work shall be deemed part of an effective technological
++measure under any applicable law fulfilling obligations under article
++11 of the WIPO copyright treaty adopted on 20 December 1996, or
++similar laws prohibiting or restricting circumvention of such
++measures.
++
++When you convey a covered work, you waive any legal power to forbid
++circumvention of technological measures to the extent such
++circumvention is effected by exercising rights under this License with
++respect to the covered work, and you disclaim any intention to limit
++operation or modification of the work as a means of enforcing, against
++the work's users, your or third parties' legal rights to forbid
++circumvention of technological measures.
++
++@item Conveying Verbatim Copies.
++
++You may convey verbatim copies of the Program's source code as you
++receive it, in any medium, provided that you conspicuously and
++appropriately publish on each copy an appropriate copyright notice;
++keep intact all notices stating that this License and any
++non-permissive terms added in accord with section 7 apply to the code;
++keep intact all notices of the absence of any warranty; and give all
++recipients a copy of this License along with the Program.
++
++You may charge any price or no price for each copy that you convey,
++and you may offer support or warranty protection for a fee.
++
++@item Conveying Modified Source Versions.
++
++You may convey a work based on the Program, or the modifications to
++produce it from the Program, in the form of source code under the
++terms of section 4, provided that you also meet all of these
++conditions:
++
++@enumerate a
++@item
++The work must carry prominent notices stating that you modified it,
++and giving a relevant date.
++
++@item
++The work must carry prominent notices stating that it is released
++under this License and any conditions added under section 7. This
++requirement modifies the requirement in section 4 to ``keep intact all
++notices''.
++
++@item
++You must license the entire work, as a whole, under this License to
++anyone who comes into possession of a copy. This License will
++therefore apply, along with any applicable section 7 additional terms,
++to the whole of the work, and all its parts, regardless of how they
++are packaged. This License gives no permission to license the work in
++any other way, but it does not invalidate such permission if you have
++separately received it.
++
++@item
++If the work has interactive user interfaces, each must display
++Appropriate Legal Notices; however, if the Program has interactive
++interfaces that do not display Appropriate Legal Notices, your work
++need not make them do so.
++@end enumerate
++
++A compilation of a covered work with other separate and independent
++works, which are not by their nature extensions of the covered work,
++and which are not combined with it such as to form a larger program,
++in or on a volume of a storage or distribution medium, is called an
++``aggregate'' if the compilation and its resulting copyright are not
++used to limit the access or legal rights of the compilation's users
++beyond what the individual works permit. Inclusion of a covered work
++in an aggregate does not cause this License to apply to the other
++parts of the aggregate.
++
++@item Conveying Non-Source Forms.
++
++You may convey a covered work in object code form under the terms of
++sections 4 and 5, provided that you also convey the machine-readable
++Corresponding Source under the terms of this License, in one of these
++ways:
++
++@enumerate a
++@item
++Convey the object code in, or embodied in, a physical product
++(including a physical distribution medium), accompanied by the
++Corresponding Source fixed on a durable physical medium customarily
++used for software interchange.
++
++@item
++Convey the object code in, or embodied in, a physical product
++(including a physical distribution medium), accompanied by a written
++offer, valid for at least three years and valid for as long as you
++offer spare parts or customer support for that product model, to give
++anyone who possesses the object code either (1) a copy of the
++Corresponding Source for all the software in the product that is
++covered by this License, on a durable physical medium customarily used
++for software interchange, for a price no more than your reasonable
++cost of physically performing this conveying of source, or (2) access
++to copy the Corresponding Source from a network server at no charge.
++
++@item
++Convey individual copies of the object code with a copy of the written
++offer to provide the Corresponding Source. This alternative is
++allowed only occasionally and noncommercially, and only if you
++received the object code with such an offer, in accord with subsection
++6b.
++
++@item
++Convey the object code by offering access from a designated place
++(gratis or for a charge), and offer equivalent access to the
++Corresponding Source in the same way through the same place at no
++further charge. You need not require recipients to copy the
++Corresponding Source along with the object code. If the place to copy
++the object code is a network server, the Corresponding Source may be
++on a different server (operated by you or a third party) that supports
++equivalent copying facilities, provided you maintain clear directions
++next to the object code saying where to find the Corresponding Source.
++Regardless of what server hosts the Corresponding Source, you remain
++obligated to ensure that it is available for as long as needed to
++satisfy these requirements.
++
++@item
++Convey the object code using peer-to-peer transmission, provided you
++inform other peers where the object code and Corresponding Source of
++the work are being offered to the general public at no charge under
++subsection 6d.
++
++@end enumerate
++
++A separable portion of the object code, whose source code is excluded
++from the Corresponding Source as a System Library, need not be
++included in conveying the object code work.
++
++A ``User Product'' is either (1) a ``consumer product'', which means any
++tangible personal property which is normally used for personal,
++family, or household purposes, or (2) anything designed or sold for
++incorporation into a dwelling. In determining whether a product is a
++consumer product, doubtful cases shall be resolved in favor of
++coverage. For a particular product received by a particular user,
++``normally used'' refers to a typical or common use of that class of
++product, regardless of the status of the particular user or of the way
++in which the particular user actually uses, or expects or is expected
++to use, the product. A product is a consumer product regardless of
++whether the product has substantial commercial, industrial or
++non-consumer uses, unless such uses represent the only significant
++mode of use of the product.
++
++``Installation Information'' for a User Product means any methods,
++procedures, authorization keys, or other information required to
++install and execute modified versions of a covered work in that User
++Product from a modified version of its Corresponding Source. The
++information must suffice to ensure that the continued functioning of
++the modified object code is in no case prevented or interfered with
++solely because modification has been made.
++
++If you convey an object code work under this section in, or with, or
++specifically for use in, a User Product, and the conveying occurs as
++part of a transaction in which the right of possession and use of the
++User Product is transferred to the recipient in perpetuity or for a
++fixed term (regardless of how the transaction is characterized), the
++Corresponding Source conveyed under this section must be accompanied
++by the Installation Information. But this requirement does not apply
++if neither you nor any third party retains the ability to install
++modified object code on the User Product (for example, the work has
++been installed in ROM).
++
++The requirement to provide Installation Information does not include a
++requirement to continue to provide support service, warranty, or
++updates for a work that has been modified or installed by the
++recipient, or for the User Product in which it has been modified or
++installed. Access to a network may be denied when the modification
++itself materially and adversely affects the operation of the network
++or violates the rules and protocols for communication across the
++network.
++
++Corresponding Source conveyed, and Installation Information provided,
++in accord with this section must be in a format that is publicly
++documented (and with an implementation available to the public in
++source code form), and must require no special password or key for
++unpacking, reading or copying.
++
++@item Additional Terms.
++
++``Additional permissions'' are terms that supplement the terms of this
++License by making exceptions from one or more of its conditions.
++Additional permissions that are applicable to the entire Program shall
++be treated as though they were included in this License, to the extent
++that they are valid under applicable law. If additional permissions
++apply only to part of the Program, that part may be used separately
++under those permissions, but the entire Program remains governed by
++this License without regard to the additional permissions.
++
++When you convey a copy of a covered work, you may at your option
++remove any additional permissions from that copy, or from any part of
++it. (Additional permissions may be written to require their own
++removal in certain cases when you modify the work.) You may place
++additional permissions on material, added by you to a covered work,
++for which you have or can give appropriate copyright permission.
++
++Notwithstanding any other provision of this License, for material you
++add to a covered work, you may (if authorized by the copyright holders
++of that material) supplement the terms of this License with terms:
++
++@enumerate a
++@item
++Disclaiming warranty or limiting liability differently from the terms
++of sections 15 and 16 of this License; or
++
++@item
++Requiring preservation of specified reasonable legal notices or author
++attributions in that material or in the Appropriate Legal Notices
++displayed by works containing it; or
++
++@item
++Prohibiting misrepresentation of the origin of that material, or
++requiring that modified versions of such material be marked in
++reasonable ways as different from the original version; or
++
++@item
++Limiting the use for publicity purposes of names of licensors or
++authors of the material; or
++
++@item
++Declining to grant rights under trademark law for use of some trade
++names, trademarks, or service marks; or
++
++@item
++Requiring indemnification of licensors and authors of that material by
++anyone who conveys the material (or modified versions of it) with
++contractual assumptions of liability to the recipient, for any
++liability that these contractual assumptions directly impose on those
++licensors and authors.
++@end enumerate
++
++All other non-permissive additional terms are considered ``further
++restrictions'' within the meaning of section 10. If the Program as you
++received it, or any part of it, contains a notice stating that it is
++governed by this License along with a term that is a further
++restriction, you may remove that term. If a license document contains
++a further restriction but permits relicensing or conveying under this
++License, you may add to a covered work material governed by the terms
++of that license document, provided that the further restriction does
++not survive such relicensing or conveying.
++
++If you add terms to a covered work in accord with this section, you
++must place, in the relevant source files, a statement of the
++additional terms that apply to those files, or a notice indicating
++where to find the applicable terms.
++
++Additional terms, permissive or non-permissive, may be stated in the
++form of a separately written license, or stated as exceptions; the
++above requirements apply either way.
++
++@item Termination.
++
++You may not propagate or modify a covered work except as expressly
++provided under this License. Any attempt otherwise to propagate or
++modify it is void, and will automatically terminate your rights under
++this License (including any patent licenses granted under the third
++paragraph of section 11).
++
++However, if you cease all violation of this License, then your license
++from a particular copyright holder is reinstated (a) provisionally,
++unless and until the copyright holder explicitly and finally
++terminates your license, and (b) permanently, if the copyright holder
++fails to notify you of the violation by some reasonable means prior to
++60 days after the cessation.
++
++Moreover, your license from a particular copyright holder is
++reinstated permanently if the copyright holder notifies you of the
++violation by some reasonable means, this is the first time you have
++received notice of violation of this License (for any work) from that
++copyright holder, and you cure the violation prior to 30 days after
++your receipt of the notice.
++
++Termination of your rights under this section does not terminate the
++licenses of parties who have received copies or rights from you under
++this License. If your rights have been terminated and not permanently
++reinstated, you do not qualify to receive new licenses for the same
++material under section 10.
++
++@item Acceptance Not Required for Having Copies.
++
++You are not required to accept this License in order to receive or run
++a copy of the Program. Ancillary propagation of a covered work
++occurring solely as a consequence of using peer-to-peer transmission
++to receive a copy likewise does not require acceptance. However,
++nothing other than this License grants you permission to propagate or
++modify any covered work. These actions infringe copyright if you do
++not accept this License. Therefore, by modifying or propagating a
++covered work, you indicate your acceptance of this License to do so.
++
++@item Automatic Licensing of Downstream Recipients.
++
++Each time you convey a covered work, the recipient automatically
++receives a license from the original licensors, to run, modify and
++propagate that work, subject to this License. You are not responsible
++for enforcing compliance by third parties with this License.
++
++An ``entity transaction'' is a transaction transferring control of an
++organization, or substantially all assets of one, or subdividing an
++organization, or merging organizations. If propagation of a covered
++work results from an entity transaction, each party to that
++transaction who receives a copy of the work also receives whatever
++licenses to the work the party's predecessor in interest had or could
++give under the previous paragraph, plus a right to possession of the
++Corresponding Source of the work from the predecessor in interest, if
++the predecessor has it or can get it with reasonable efforts.
++
++You may not impose any further restrictions on the exercise of the
++rights granted or affirmed under this License. For example, you may
++not impose a license fee, royalty, or other charge for exercise of
++rights granted under this License, and you may not initiate litigation
++(including a cross-claim or counterclaim in a lawsuit) alleging that
++any patent claim is infringed by making, using, selling, offering for
++sale, or importing the Program or any portion of it.
++
++@item Patents.
++
++A ``contributor'' is a copyright holder who authorizes use under this
++License of the Program or a work on which the Program is based. The
++work thus licensed is called the contributor's ``contributor version''.
++
++A contributor's ``essential patent claims'' are all patent claims owned
++or controlled by the contributor, whether already acquired or
++hereafter acquired, that would be infringed by some manner, permitted
++by this License, of making, using, or selling its contributor version,
++but do not include claims that would be infringed only as a
++consequence of further modification of the contributor version. For
++purposes of this definition, ``control'' includes the right to grant
++patent sublicenses in a manner consistent with the requirements of
++this License.
++
++Each contributor grants you a non-exclusive, worldwide, royalty-free
++patent license under the contributor's essential patent claims, to
++make, use, sell, offer for sale, import and otherwise run, modify and
++propagate the contents of its contributor version.
++
++In the following three paragraphs, a ``patent license'' is any express
++agreement or commitment, however denominated, not to enforce a patent
++(such as an express permission to practice a patent or covenant not to
++sue for patent infringement). To ``grant'' such a patent license to a
++party means to make such an agreement or commitment not to enforce a
++patent against the party.
++
++If you convey a covered work, knowingly relying on a patent license,
++and the Corresponding Source of the work is not available for anyone
++to copy, free of charge and under the terms of this License, through a
++publicly available network server or other readily accessible means,
++then you must either (1) cause the Corresponding Source to be so
++available, or (2) arrange to deprive yourself of the benefit of the
++patent license for this particular work, or (3) arrange, in a manner
++consistent with the requirements of this License, to extend the patent
++license to downstream recipients. ``Knowingly relying'' means you have
++actual knowledge that, but for the patent license, your conveying the
++covered work in a country, or your recipient's use of the covered work
++in a country, would infringe one or more identifiable patents in that
++country that you have reason to believe are valid.
++
++If, pursuant to or in connection with a single transaction or
++arrangement, you convey, or propagate by procuring conveyance of, a
++covered work, and grant a patent license to some of the parties
++receiving the covered work authorizing them to use, propagate, modify
++or convey a specific copy of the covered work, then the patent license
++you grant is automatically extended to all recipients of the covered
++work and works based on it.
++
++A patent license is ``discriminatory'' if it does not include within the
++scope of its coverage, prohibits the exercise of, or is conditioned on
++the non-exercise of one or more of the rights that are specifically
++granted under this License. You may not convey a covered work if you
++are a party to an arrangement with a third party that is in the
++business of distributing software, under which you make payment to the
++third party based on the extent of your activity of conveying the
++work, and under which the third party grants, to any of the parties
++who would receive the covered work from you, a discriminatory patent
++license (a) in connection with copies of the covered work conveyed by
++you (or copies made from those copies), or (b) primarily for and in
++connection with specific products or compilations that contain the
++covered work, unless you entered into that arrangement, or that patent
++license was granted, prior to 28 March 2007.
++
++Nothing in this License shall be construed as excluding or limiting
++any implied license or other defenses to infringement that may
++otherwise be available to you under applicable patent law.
++
++@item No Surrender of Others' Freedom.
++
++If conditions are imposed on you (whether by court order, agreement or
++otherwise) that contradict the conditions of this License, they do not
++excuse you from the conditions of this License. If you cannot convey
++a covered work so as to satisfy simultaneously your obligations under
++this License and any other pertinent obligations, then as a
++consequence you may not convey it at all. For example, if you agree
++to terms that obligate you to collect a royalty for further conveying
++from those to whom you convey the Program, the only way you could
++satisfy both those terms and this License would be to refrain entirely
++from conveying the Program.
++
++@item Use with the GNU Affero General Public License.
++
++Notwithstanding any other provision of this License, you have
++permission to link or combine any covered work with a work licensed
++under version 3 of the GNU Affero General Public License into a single
++combined work, and to convey the resulting work. The terms of this
++License will continue to apply to the part which is the covered work,
++but the special requirements of the GNU Affero General Public License,
++section 13, concerning interaction through a network will apply to the
++combination as such.
++
++@item Revised Versions of this License.
++
++The Free Software Foundation may publish revised and/or new versions
++of the GNU General Public License from time to time. Such new
++versions will be similar in spirit to the present version, but may
++differ in detail to address new problems or concerns.
++
++Each version is given a distinguishing version number. If the Program
++specifies that a certain numbered version of the GNU General Public
++License ``or any later version'' applies to it, you have the option of
++following the terms and conditions either of that numbered version or
++of any later version published by the Free Software Foundation. If
++the Program does not specify a version number of the GNU General
++Public License, you may choose any version ever published by the Free
++Software Foundation.
++
++If the Program specifies that a proxy can decide which future versions
++of the GNU General Public License can be used, that proxy's public
++statement of acceptance of a version permanently authorizes you to
++choose that version for the Program.
++
++Later license versions may give you additional or different
++permissions. However, no additional obligations are imposed on any
++author or copyright holder as a result of your choosing to follow a
++later version.
++
++@item Disclaimer of Warranty.
++
++THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
++APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
++HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT
++WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
++LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
++PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
++DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
++CORRECTION.
++
++@item Limitation of Liability.
++
++IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
++WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
++CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
++INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
++ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
++NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
++LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
++TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
++PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
++
++@item Interpretation of Sections 15 and 16.
++
++If the disclaimer of warranty and limitation of liability provided
++above cannot be given local legal effect according to their terms,
++reviewing courts shall apply local law that most closely approximates
++an absolute waiver of all civil liability in connection with the
++Program, unless a warranty or assumption of liability accompanies a
++copy of the Program in return for a fee.
++
++@end enumerate
++
++@heading END OF TERMS AND CONDITIONS
++
++@heading How to Apply These Terms to Your New Programs
++
++If you develop a new program, and you want it to be of the greatest
++possible use to the public, the best way to achieve this is to make it
++free software which everyone can redistribute and change under these
++terms.
++
++To do so, attach the following notices to the program. It is safest
++to attach them to the start of each source file to most effectively
++state the exclusion of warranty; and each file should have at least
++the ``copyright'' line and a pointer to where the full notice is found.
++
++@smallexample
++@var{one line to give the program's name and a brief idea of what it does.}
++Copyright (C) @var{year} @var{name of author}
++
++This program is free software: you can redistribute it and/or modify
++it under the terms of the GNU General Public License as published by
++the Free Software Foundation, either version 3 of the License, or (at
++your option) any later version.
++
++This program is distributed in the hope that it will be useful, but
++WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++General Public License for more details.
++
++You should have received a copy of the GNU General Public License
++along with this program. If not, see @url{http://www.gnu.org/licenses/}.
++@end smallexample
++
++Also add information on how to contact you by electronic and paper mail.
++
++If the program does terminal interaction, make it output a short
++notice like this when it starts in an interactive mode:
++
++@smallexample
++@var{program} Copyright (C) @var{year} @var{name of author}
++This program comes with ABSOLUTELY NO WARRANTY; for details type @samp{show w}.
++This is free software, and you are welcome to redistribute it
++under certain conditions; type @samp{show c} for details.
++@end smallexample
++
++The hypothetical commands @samp{show w} and @samp{show c} should show
++the appropriate parts of the General Public License. Of course, your
++program's commands might be different; for a GUI interface, you would
++use an ``about box''.
++
++You should also get your employer (if you work as a programmer) or school,
++if any, to sign a ``copyright disclaimer'' for the program, if necessary.
++For more information on this, and how to apply and follow the GNU GPL, see
++@url{http://www.gnu.org/licenses/}.
++
++The GNU General Public License does not permit incorporating your
++program into proprietary programs. If your program is a subroutine
++library, you may consider it more useful to permit linking proprietary
++applications with the library. If this is what you want to do, use
++the GNU Lesser General Public License instead of this License. But
++first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}.
++@c man end
diff --git a/sys-devel/gcc-apple/gcc-apple-3.5.0_p3506-r1.ebuild b/sys-devel/gcc-apple/gcc-apple-3.5.0_p3506-r1.ebuild
index 5a4ff3b2961b..a4d589ded859 100644
--- a/sys-devel/gcc-apple/gcc-apple-3.5.0_p3506-r1.ebuild
+++ b/sys-devel/gcc-apple/gcc-apple-3.5.0_p3506-r1.ebuild
@@ -1,6 +1,8 @@
-# Copyright 1999-2009 Gentoo Foundation
+# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/gcc-apple-3.5.0_p3506-r1.ebuild,v 1.1 2009/06/21 10:27:55 grobian Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/gcc-apple-3.5.0_p3506-r1.ebuild,v 1.2 2010/03/08 17:12:11 grobian Exp $
+
+EAPI="3"
inherit eutils
@@ -28,9 +30,7 @@ DEPEND="${RDEPEND}
S=${WORKDIR}/gcc_os_35-${APPLE_VERS}
-src_unpack() {
- unpack ${A}
- cd "${S}"
+src_prepare() {
# we use our libtool
sed -i -e "s:/usr/bin/libtool:${EPREFIX}/usr/bin/libtool:" \
gcc/config/darwin.h || die "sed gcc/config/darwin.h failed"
@@ -43,7 +43,7 @@ src_unpack() {
gcc/Makefile.in || die "sed gcc/Makefile.in failed."
}
-src_compile() {
+src_configure() {
local langs="c"
use nocxx || langs="${langs},c++"
use fortran && langs="${langs},f77"
@@ -100,12 +100,14 @@ src_compile() {
cd "${WORKDIR}"/build
einfo "Configuring GCC with: ${myconf//--/\n\t--}"
"${S}"/configure ${myconf} || die "conf failed"
+}
+
+src_compile() {
+ cd "${WORKDIR}"/build || die
make -j1 bootstrap || die "emake failed"
}
src_install() {
- local ED=${ED-${D}}
-
cd "${WORKDIR}"/build
make DESTDIR="${D}" install || die
@@ -134,8 +136,3 @@ src_install() {
echo "INFOPATH=\"${EPREFIX}/usr/share/gcc-data/${CHOST}/${GCC_VERS}/info\"" >> ${gcc_envd_file}
echo "STDCXX_INCDIR=\"g++-v${GCC_VERS/\.*/}\"" >> ${gcc_envd_file}
}
-
-pkg_postinst() {
- # beware this also switches when it's on another branch version of GCC
- gcc-config ${CHOST}-${GCC_VERS}
-}
diff --git a/sys-devel/gcc-apple/gcc-apple-4.0.1_p5490-r2.ebuild b/sys-devel/gcc-apple/gcc-apple-4.0.1_p5490-r2.ebuild
index adce7f7d1536..04f9530c638d 100644
--- a/sys-devel/gcc-apple/gcc-apple-4.0.1_p5490-r2.ebuild
+++ b/sys-devel/gcc-apple/gcc-apple-4.0.1_p5490-r2.ebuild
@@ -1,6 +1,8 @@
-# Copyright 1999-2009 Gentoo Foundation
+# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/gcc-apple-4.0.1_p5490-r2.ebuild,v 1.1 2009/06/21 10:27:55 grobian Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/gcc-apple-4.0.1_p5490-r2.ebuild,v 1.2 2010/03/08 17:12:11 grobian Exp $
+
+EAPI="3"
ETYPE="gcc-compiler"
@@ -45,8 +47,11 @@ fi
STDCXX_INCDIR=${LIBPATH}/include/g++-v${GCC_VERS/\.*/}
src_unpack() {
+ # override toolchain.eclass func
unpack ${A}
- cd "${S}"
+}
+
+src_prepare() {
# we use our libtool
sed -i -e "s:/usr/bin/libtool:${EPREFIX}/usr/bin/${CTARGET}-libtool:" \
gcc/config/darwin.h || die "sed gcc/config/darwin.h failed"
@@ -65,7 +70,7 @@ src_unpack() {
eprefixify "${S}"/gcc/gcc.c
}
-src_compile() {
+src_configure() {
local langs="c"
use nocxx || langs="${langs},c++"
use objc && langs="${langs},objc"
@@ -147,12 +152,14 @@ src_compile() {
cd "${WORKDIR}"/build
einfo "Configuring GCC with: ${myconf//--/\n\t--}"
"${S}"/configure ${myconf} || die "conf failed"
+}
+
+src_compile() {
+ cd "${WORKDIR}"/build || die
emake bootstrap || die "emake failed"
}
src_install() {
- local ED=${ED-${D}}
-
cd "${WORKDIR}"/build
# -jX doesn't work
emake -j1 DESTDIR="${D}" install || die
@@ -217,11 +224,11 @@ src_install() {
done
# I do not know if this will break gcj stuff, so I'll only do it for
- # objc for now; basically "ffi.h" is the correct file to include,
- # but it gets installed in .../GCCVER/include and yet it does
- # "#include <ffitarget.h>" which (correctly, as it's an "extra" file)
- # is installed in .../GCCVER/include/libffi; the following fixes
- # ffi.'s include of ffitarget.h - Armando Di Cianno <fafhrd@gentoo.org>
+ # objc for now; basically "ffi.h" is the correct file to include,
+ # but it gets installed in .../GCCVER/include and yet it does
+ # "#include <ffitarget.h>" which (correctly, as it's an "extra" file)
+ # is installed in .../GCCVER/include/libffi; the following fixes
+ # ffi.'s include of ffitarget.h - Armando Di Cianno <fafhrd@gentoo.org>
if [[ -d ${D}${LIBPATH}/include/libffi ]] ; then
mv -i "${D}"${LIBPATH}/include/libffi/* "${D}"${LIBPATH}/include || die
rm -r "${D}"${LIBPATH}/include/libffi || die
@@ -244,8 +251,6 @@ pkg_postinst() {
}
pkg_postrm() {
- local EROOT=${EROOT-${ROOT}}
-
# clean up the cruft left behind by cross-compilers
if is_crosscompile ; then
if [[ -z $(ls "${EROOT}"/etc/env.d/gcc/${CTARGET}* 2>/dev/null) ]] ; then
diff --git a/sys-devel/gcc-apple/gcc-apple-4.0.1_p5493.ebuild b/sys-devel/gcc-apple/gcc-apple-4.0.1_p5493.ebuild
index bcf4abe47b95..0f16aa3d56ea 100644
--- a/sys-devel/gcc-apple/gcc-apple-4.0.1_p5493.ebuild
+++ b/sys-devel/gcc-apple/gcc-apple-4.0.1_p5493.ebuild
@@ -1,6 +1,8 @@
-# Copyright 1999-2009 Gentoo Foundation
+# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/gcc-apple-4.0.1_p5493.ebuild,v 1.2 2009/09/26 18:15:18 grobian Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/gcc-apple-4.0.1_p5493.ebuild,v 1.3 2010/03/08 17:12:11 grobian Exp $
+
+EAPI="3"
ETYPE="gcc-compiler"
@@ -45,8 +47,11 @@ fi
STDCXX_INCDIR=${LIBPATH}/include/g++-v${GCC_VERS/\.*/}
src_unpack() {
+ # override toolchain.eclass func
unpack ${A}
- cd "${S}"
+}
+
+src_prepare() {
# we use our libtool
sed -i -e "s:/usr/bin/libtool:${EPREFIX}/usr/bin/${CTARGET}-libtool:" \
gcc/config/darwin.h || die "sed gcc/config/darwin.h failed"
@@ -65,7 +70,7 @@ src_unpack() {
eprefixify "${S}"/gcc/gcc.c
}
-src_compile() {
+src_configure() {
local langs="c"
use nocxx || langs="${langs},c++"
use objc && langs="${langs},objc"
@@ -147,12 +152,14 @@ src_compile() {
cd "${WORKDIR}"/build
einfo "Configuring GCC with: ${myconf//--/\n\t--}"
"${S}"/configure ${myconf} || die "conf failed"
+}
+
+src_compile() {
+ cd "${WORKDIR}"/build || die
emake bootstrap || die "emake failed"
}
src_install() {
- local ED=${ED-${D}}
-
cd "${WORKDIR}"/build
# -jX doesn't work
emake -j1 DESTDIR="${D}" install || die
@@ -217,11 +224,11 @@ src_install() {
done
# I do not know if this will break gcj stuff, so I'll only do it for
- # objc for now; basically "ffi.h" is the correct file to include,
- # but it gets installed in .../GCCVER/include and yet it does
- # "#include <ffitarget.h>" which (correctly, as it's an "extra" file)
- # is installed in .../GCCVER/include/libffi; the following fixes
- # ffi.'s include of ffitarget.h - Armando Di Cianno <fafhrd@gentoo.org>
+ # objc for now; basically "ffi.h" is the correct file to include,
+ # but it gets installed in .../GCCVER/include and yet it does
+ # "#include <ffitarget.h>" which (correctly, as it's an "extra" file)
+ # is installed in .../GCCVER/include/libffi; the following fixes
+ # ffi.'s include of ffitarget.h - Armando Di Cianno <fafhrd@gentoo.org>
if [[ -d ${D}${LIBPATH}/include/libffi ]] ; then
mv -i "${D}"${LIBPATH}/include/libffi/* "${D}"${LIBPATH}/include || die
rm -r "${D}"${LIBPATH}/include/libffi || die
@@ -244,8 +251,6 @@ pkg_postinst() {
}
pkg_postrm() {
- local EROOT=${EROOT-${ROOT}}
-
# clean up the cruft left behind by cross-compilers
if is_crosscompile ; then
if [[ -z $(ls "${EROOT}"/etc/env.d/gcc/${CTARGET}* 2>/dev/null) ]] ; then
diff --git a/sys-devel/gcc-apple/gcc-apple-4.2.1_p5566-r2.ebuild b/sys-devel/gcc-apple/gcc-apple-4.2.1_p5566-r2.ebuild
index e3156f9b9705..b3f3ab19df0d 100644
--- a/sys-devel/gcc-apple/gcc-apple-4.2.1_p5566-r2.ebuild
+++ b/sys-devel/gcc-apple/gcc-apple-4.2.1_p5566-r2.ebuild
@@ -1,6 +1,8 @@
-# Copyright 1999-2009 Gentoo Foundation
+# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/gcc-apple-4.2.1_p5566-r2.ebuild,v 1.1 2009/06/21 10:27:55 grobian Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/gcc-apple-4.2.1_p5566-r2.ebuild,v 1.2 2010/03/08 17:12:11 grobian Exp $
+
+EAPI="3"
ETYPE="gcc-compiler"
@@ -54,19 +56,23 @@ fi
STDCXX_INCDIR=${LIBPATH}/include/g++-v${GCC_VERS/\.*/}
src_unpack() {
+ # override toolchain.eclass func
unpack ${A}
- cd "${S}"
+}
+src_prepare() {
# Support for fortran
if use fortran ; then
- cd "${WORKDIR}"/gcc-${GCC_VERS}
- # hmmm, just use rsync?
- tar cf - * | ( cd "${S}" && tar xf - )
- cd "${S}"
- # from: http://r.research.att.com/tools/
+ mv "${WORKDIR}"/gcc-${GCC_VERS}/gcc/fortran gcc/ || die
+ mv "${WORKDIR}"/gcc-${GCC_VERS}/libgfortran . || die
+ # from: substracted from http://r.research.att.com/tools/
epatch "${FILESDIR}"/${PN}-${GCC_VERS}-gfortran.patch
fi
+ # move in libstdc++
+ mv "${WORKDIR}"/libstdcxx-${LIBSTDCXX_APPLE_VERSION}/libstdcxx/libstdc++-v3 .
+ epatch "${FILESDIR}"/libstdc++-${LIBSTDCXX_APPLE_VERSION}.patch
+
# we use our libtool
sed -i -e "s:/usr/bin/libtool:${EPREFIX}/usr/bin/${CTARGET}-libtool:" \
gcc/config/darwin.h || die "sed gcc/config/darwin.h failed"
@@ -105,11 +111,17 @@ src_unpack() {
cd "${S}"/gcc && eautoconf
cd "${S}"/libgomp && eautoconf
- cd "${WORKDIR}"/libstdcxx-${LIBSTDCXX_APPLE_VERSION}/libstdcxx
- epatch "${FILESDIR}"/libstdc++-${LIBSTDCXX_APPLE_VERSION}.patch
+ local BRANDING_GCC_PKGVERSION="$(sed -n -e '/^#define VERSUFFIX/s/^[^"]*"\([^"]\+\)".*$/\1/p' "${S}"/gcc/version.c)"
+ BRANDING_GCC_PKGVERSION=${BRANDING_GCC_PKGVERSION/)/, Gentoo ${PVR})}
+ einfo "patching gcc version: ${GCC_VERS}${BRANDING_GCC_PKGVERSION}"
+
+ sed -i -e "s~VERSUFFIX \"[^\"]*~VERSUFFIX \"${BRANDING_GCC_PKGVERSION}~" \
+ "${S}"/gcc/version.c || die "failed to update VERSUFFIX with Gentoo branding"
+ sed -i -e 's~developer\.apple\.com\/bugreporter~bugs\.gentoo\.org\/~' \
+ "${S}"/gcc/version.c || die "Failed to change the bug URL"
}
-src_compile() {
+src_configure() {
local langs="c"
use nocxx || langs="${langs},c++"
use objc && langs="${langs},objc"
@@ -175,7 +187,7 @@ src_compile() {
&& myconf="${myconf} --disable-multilib"
#libstdcxx does not support this one
- local gccconf="${myconf} --enable-languages=${langs}"
+ myconf="${myconf} --enable-languages=${langs}"
# The produced libgcc_s.dylib is faulty if using a bit too much
# optimisation. Nail it down to something sane
@@ -190,31 +202,20 @@ src_compile() {
mkdir -p "${WORKDIR}"/build
cd "${WORKDIR}"/build
- einfo "Configuring GCC with: ${gccconf//--/\n\t--}"
- "${S}"/configure ${gccconf} || die "conf failed"
- emake bootstrap || die "emake failed"
+ einfo "Configuring GCC with: ${myconf//--/\n\t--}"
+ "${S}"/configure ${myconf} || die "conf failed"
+}
- local libstdcxxconf="${myconf} --disable-libstdcxx-debug"
- mkdir -p "${WORKDIR}"/build_libstdcxx || die
- cd "${WORKDIR}"/build_libstdcxx
- #the build requires the gcc built before, so link to it
- ln -s "${WORKDIR}"/build/gcc "${WORKDIR}"/build_libstdcxx/gcc || die
- einfo "Configuring libstdcxx with: ${libstdcxxconf//--/\n\t--}"
- "${WORKDIR}"/libstdcxx-${LIBSTDCXX_APPLE_VERSION}/libstdcxx/configure ${libstdcxxconf} || die "conf failed"
- emake all || die "emake failed"
+src_compile() {
+ cd "${WORKDIR}"/build || die
+ emake bootstrap || die "emake failed"
}
src_install() {
- local ED=${ED-${D}}
-
cd "${WORKDIR}"/build
# -jX doesn't work
emake -j1 DESTDIR="${D}" install || die
- cd "${WORKDIR}"/build_libstdcxx
- emake -j1 DESTDIR="${D}" install || die
- cd "${WORKDIR}"/build
-
# Punt some tools which are really only useful while building gcc
find "${ED}" -name install-tools -prune -type d -exec rm -rf "{}" \;
# This one comes with binutils
@@ -302,8 +303,6 @@ pkg_postinst() {
}
pkg_postrm() {
- local EROOT=${EROOT-${ROOT}}
-
# clean up the cruft left behind by cross-compilers
if is_crosscompile ; then
if [[ -z $(ls "${EROOT}"/etc/env.d/gcc/${CTARGET}* 2>/dev/null) ]] ; then
diff --git a/sys-devel/gcc-apple/gcc-apple-4.2.1_p5574.ebuild b/sys-devel/gcc-apple/gcc-apple-4.2.1_p5574.ebuild
index 6151f9c7c515..294f930c2ddf 100644
--- a/sys-devel/gcc-apple/gcc-apple-4.2.1_p5574.ebuild
+++ b/sys-devel/gcc-apple/gcc-apple-4.2.1_p5574.ebuild
@@ -1,6 +1,8 @@
-# Copyright 1999-2009 Gentoo Foundation
+# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/gcc-apple-4.2.1_p5574.ebuild,v 1.4 2009/09/25 20:34:17 grobian Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/gcc-apple-4.2.1_p5574.ebuild,v 1.5 2010/03/08 17:12:11 grobian Exp $
+
+EAPI="3"
ETYPE="gcc-compiler"
@@ -54,19 +56,23 @@ fi
STDCXX_INCDIR=${LIBPATH}/include/g++-v${GCC_VERS/\.*/}
src_unpack() {
+ # override toolchain.eclass func
unpack ${A}
- cd "${S}"
+}
+src_prepare() {
# Support for fortran
if use fortran ; then
- cd "${WORKDIR}"/gcc-${GCC_VERS}
- # hmmm, just use rsync?
- tar cf - * | ( cd "${S}" && tar xf - )
- cd "${S}"
- # from: http://r.research.att.com/tools/
+ mv "${WORKDIR}"/gcc-${GCC_VERS}/gcc/fortran gcc/ || die
+ mv "${WORKDIR}"/gcc-${GCC_VERS}/libgfortran . || die
+ # from: substracted from http://r.research.att.com/tools/
epatch "${FILESDIR}"/${PN}-${GCC_VERS}-gfortran.patch
fi
+ # move in libstdc++
+ mv "${WORKDIR}"/libstdcxx-${LIBSTDCXX_APPLE_VERSION}/libstdcxx/libstdc++-v3 .
+ epatch "${FILESDIR}"/libstdc++-${LIBSTDCXX_APPLE_VERSION}.patch
+
# we use our libtool
sed -i -e "s:/usr/bin/libtool:${EPREFIX}/usr/bin/${CTARGET}-libtool:" \
gcc/config/darwin.h || die "sed gcc/config/darwin.h failed"
@@ -105,14 +111,17 @@ src_unpack() {
cd "${S}"/gcc && eautoconf
cd "${S}"/libgomp && eautoconf
- cd "${WORKDIR}"/libstdcxx-${LIBSTDCXX_APPLE_VERSION}/libstdcxx
- epatch "${FILESDIR}"/libstdc++-${LIBSTDCXX_APPLE_VERSION}.patch
- # copy lt-stuff that has been fixed for darwin10 in gcc but not
- # libstdcxx
- cp "${S}"/lt* . || die "failed to update libstdcxx' lt-files"
+ local BRANDING_GCC_PKGVERSION="$(sed -n -e '/^#define VERSUFFIX/s/^[^"]*"\([^"]\+\)".*$/\1/p' "${S}"/gcc/version.c)"
+ BRANDING_GCC_PKGVERSION=${BRANDING_GCC_PKGVERSION/)/, Gentoo ${PVR})}
+ einfo "patching gcc version: ${GCC_VERS}${BRANDING_GCC_PKGVERSION}"
+
+ sed -i -e "s~VERSUFFIX \"[^\"]*~VERSUFFIX \"${BRANDING_GCC_PKGVERSION}~" \
+ "${S}"/gcc/version.c || die "failed to update VERSUFFIX with Gentoo branding"
+ sed -i -e 's~developer\.apple\.com\/bugreporter~bugs\.gentoo\.org\/~' \
+ "${S}"/gcc/version.c || die "Failed to change the bug URL"
}
-src_compile() {
+src_configure() {
local langs="c"
use nocxx || langs="${langs},c++"
use objc && langs="${langs},objc"
@@ -178,7 +187,7 @@ src_compile() {
&& myconf="${myconf} --disable-multilib"
#libstdcxx does not support this one
- local gccconf="${myconf} --enable-languages=${langs}"
+ myconf="${myconf} --enable-languages=${langs}"
# The produced libgcc_s.dylib is faulty if using a bit too much
# optimisation. Nail it down to something sane
@@ -193,31 +202,20 @@ src_compile() {
mkdir -p "${WORKDIR}"/build
cd "${WORKDIR}"/build
- einfo "Configuring GCC with: ${gccconf//--/\n\t--}"
- "${S}"/configure ${gccconf} || die "conf failed"
- emake bootstrap || die "emake failed"
+ einfo "Configuring GCC with: ${myconf//--/\n\t--}"
+ "${S}"/configure ${myconf} || die "conf failed"
+}
- local libstdcxxconf="${myconf} --disable-libstdcxx-debug"
- mkdir -p "${WORKDIR}"/build_libstdcxx || die
- cd "${WORKDIR}"/build_libstdcxx
- #the build requires the gcc built before, so link to it
- ln -s "${WORKDIR}"/build/gcc "${WORKDIR}"/build_libstdcxx/gcc || die
- einfo "Configuring libstdcxx with: ${libstdcxxconf//--/\n\t--}"
- "${WORKDIR}"/libstdcxx-${LIBSTDCXX_APPLE_VERSION}/libstdcxx/configure ${libstdcxxconf} || die "conf failed"
- emake all || die "emake failed"
+src_compile() {
+ cd "${WORKDIR}"/build || die
+ emake bootstrap || die "emake failed"
}
src_install() {
- local ED=${ED-${D}}
-
cd "${WORKDIR}"/build
# -jX doesn't work
emake -j1 DESTDIR="${D}" install || die
- cd "${WORKDIR}"/build_libstdcxx
- emake -j1 DESTDIR="${D}" install || die
- cd "${WORKDIR}"/build
-
# Punt some tools which are really only useful while building gcc
find "${ED}" -name install-tools -prune -type d -exec rm -rf "{}" \;
# This one comes with binutils
@@ -305,8 +303,6 @@ pkg_postinst() {
}
pkg_postrm() {
- local EROOT=${EROOT-${ROOT}}
-
# clean up the cruft left behind by cross-compilers
if is_crosscompile ; then
if [[ -z $(ls "${EROOT}"/etc/env.d/gcc/${CTARGET}* 2>/dev/null) ]] ; then
diff --git a/sys-devel/gcc-apple/gcc-apple-4.2.1_p5646.ebuild b/sys-devel/gcc-apple/gcc-apple-4.2.1_p5646.ebuild
index 6042b2610c28..fe3fdf341433 100644
--- a/sys-devel/gcc-apple/gcc-apple-4.2.1_p5646.ebuild
+++ b/sys-devel/gcc-apple/gcc-apple-4.2.1_p5646.ebuild
@@ -1,6 +1,8 @@
-# Copyright 1999-2009 Gentoo Foundation
+# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/gcc-apple-4.2.1_p5646.ebuild,v 1.1 2009/09/05 16:46:34 grobian Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/gcc-apple-4.2.1_p5646.ebuild,v 1.2 2010/03/08 17:12:11 grobian Exp $
+
+EAPI="3"
ETYPE="gcc-compiler"
@@ -8,13 +10,20 @@ inherit eutils toolchain flag-o-matic autotools prefix
GCC_VERS=${PV/_p*/}
APPLE_VERS=${PV/*_p/}
-LIBSTDCXX_APPLE_VERSION=39
DESCRIPTION="Apple branch of the GNU Compiler Collection, Developer Tools 3.2"
HOMEPAGE="http://gcc.gnu.org"
SRC_URI="http://www.opensource.apple.com/darwinsource/tarballs/other/gcc-${APPLE_VERS}.tar.gz
- http://www.opensource.apple.com/darwinsource/tarballs/other/libstdcxx-${LIBSTDCXX_APPLE_VERSION}.tar.gz
+ http://www.opensource.apple.com/darwinsource/tarballs/other/libstdcxx-16.tar.gz
+ http://www.opensource.apple.com/darwinsource/tarballs/other/libstdcxx-39.tar.gz
fortran? ( mirror://gnu/gcc/gcc-${GCC_VERS}/gcc-fortran-${GCC_VERS}.tar.bz2 )"
-LICENSE="APSL-2 GPL-2"
+LICENSE="GPL-2"
+
+if [[ ${CHOST#*-darwin} -ge 9 ]] ; then
+ LIBSTDCXX_APPLE_VERSION=39
+else
+ # pre Leopard has no dtrace, which is required by 37.11 and above
+ LIBSTDCXX_APPLE_VERSION=16
+fi
if is_crosscompile; then
SLOT="${CTARGET}-42"
@@ -54,17 +63,26 @@ fi
STDCXX_INCDIR=${LIBPATH}/include/g++-v${GCC_VERS/\.*/}
src_unpack() {
+ # override toolchain.eclass func
unpack ${A}
- cd "${S}"
+}
+src_prepare() {
# Support for fortran
if use fortran ; then
- cd "${WORKDIR}"/gcc-${GCC_VERS}
- # hmmm, just use rsync?
- tar cf - * | ( cd "${S}" && tar xf - )
- cd "${S}"
- # from: http://r.research.att.com/tools/
- epatch "${FILESDIR}"/${PN}-${GCC_VERS}-gfortran.patch
+ mv "${WORKDIR}"/gcc-${GCC_VERS}/gcc/fortran gcc/ || die
+ mv "${WORKDIR}"/gcc-${GCC_VERS}/libgfortran . || die
+ # from: substracted from http://r.research.att.com/tools/
+ epatch "${FILESDIR}"/${PN}-4.2.1_p5646-gfortran.patch
+ fi
+
+ # move in libstdc++
+ mv "${WORKDIR}"/libstdcxx-${LIBSTDCXX_APPLE_VERSION}/libstdcxx/libstdc++-v3 .
+ if [[ ${LIBSTDCXX_APPLE_VERSION} == 16 ]] ; then
+ epatch "${FILESDIR}"/libstdc++-${LIBSTDCXX_APPLE_VERSION}.patch # does it apply on 37?
+ sed -i -e 's/__block\([^_]\)/__blk\1/g' \
+ libstdc++-v3/include/ext/mt_allocator.h \
+ libstdc++-v3/src/mt_allocator.cc || die "conflict fix failed"
fi
# we use our libtool
@@ -104,9 +122,18 @@ src_unpack() {
epatch "${FILESDIR}"/${PN}-${GCC_VERS}-texinfo.patch
cd "${S}"/gcc && eautoconf
cd "${S}"/libgomp && eautoconf
+
+ local BRANDING_GCC_PKGVERSION="$(sed -n -e '/^#define VERSUFFIX/s/^[^"]*"\([^"]\+\)".*$/\1/p' "${S}"/gcc/version.c)"
+ BRANDING_GCC_PKGVERSION=${BRANDING_GCC_PKGVERSION/)/, Gentoo ${PVR})}
+ einfo "patching gcc version: ${GCC_VERS}${BRANDING_GCC_PKGVERSION}"
+
+ sed -i -e "s~VERSUFFIX \"[^\"]*~VERSUFFIX \"${BRANDING_GCC_PKGVERSION}~" \
+ "${S}"/gcc/version.c || die "failed to update VERSUFFIX with Gentoo branding"
+ sed -i -e 's~developer\.apple\.com\/bugreporter~bugs\.gentoo\.org\/~' \
+ "${S}"/gcc/version.c || die "Failed to change the bug URL"
}
-src_compile() {
+src_configure() {
local langs="c"
use nocxx || langs="${langs},c++"
use objc && langs="${langs},objc"
@@ -172,7 +199,7 @@ src_compile() {
&& myconf="${myconf} --disable-multilib"
#libstdcxx does not support this one
- local gccconf="${myconf} --enable-languages=${langs}"
+ myconf="${myconf} --enable-languages=${langs}"
# The produced libgcc_s.dylib is faulty if using a bit too much
# optimisation. Nail it down to something sane
@@ -187,31 +214,20 @@ src_compile() {
mkdir -p "${WORKDIR}"/build
cd "${WORKDIR}"/build
- einfo "Configuring GCC with: ${gccconf//--/\n\t--}"
- "${S}"/configure ${gccconf} || die "conf failed"
- emake bootstrap || die "emake failed"
+ einfo "Configuring GCC with: ${myconf//--/\n\t--}"
+ "${S}"/configure ${myconf} || die "conf failed"
+}
- local libstdcxxconf="${myconf} --disable-libstdcxx-debug"
- mkdir -p "${WORKDIR}"/build_libstdcxx || die
- cd "${WORKDIR}"/build_libstdcxx
- #the build requires the gcc built before, so link to it
- ln -s "${WORKDIR}"/build/gcc "${WORKDIR}"/build_libstdcxx/gcc || die
- einfo "Configuring libstdcxx with: ${libstdcxxconf//--/\n\t--}"
- "${WORKDIR}"/libstdcxx-${LIBSTDCXX_APPLE_VERSION}/libstdcxx/configure ${libstdcxxconf} || die "conf failed"
- emake all || die "emake failed"
+src_compile() {
+ cd "${WORKDIR}"/build || die
+ emake bootstrap || die "emake failed"
}
src_install() {
- local ED=${ED-${D}}
-
cd "${WORKDIR}"/build
# -jX doesn't work
emake -j1 DESTDIR="${D}" install || die
- cd "${WORKDIR}"/build_libstdcxx
- emake -j1 DESTDIR="${D}" install || die
- cd "${WORKDIR}"/build
-
# Punt some tools which are really only useful while building gcc
find "${ED}" -name install-tools -prune -type d -exec rm -rf "{}" \;
# This one comes with binutils
@@ -299,8 +315,6 @@ pkg_postinst() {
}
pkg_postrm() {
- local EROOT=${EROOT-${ROOT}}
-
# clean up the cruft left behind by cross-compilers
if is_crosscompile ; then
if [[ -z $(ls "${EROOT}"/etc/env.d/gcc/${CTARGET}* 2>/dev/null) ]] ; then
diff --git a/sys-devel/gcc-apple/gcc-apple-4.2.1_p5647.ebuild b/sys-devel/gcc-apple/gcc-apple-4.2.1_p5647.ebuild
new file mode 100644
index 000000000000..b7d4370b31cd
--- /dev/null
+++ b/sys-devel/gcc-apple/gcc-apple-4.2.1_p5647.ebuild
@@ -0,0 +1,327 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc-apple/gcc-apple-4.2.1_p5647.ebuild,v 1.1 2010/03/08 17:12:11 grobian Exp $
+
+EAPI="3"
+
+ETYPE="gcc-compiler"
+
+inherit eutils toolchain flag-o-matic autotools prefix
+
+GCC_VERS=${PV/_p*/}
+APPLE_VERS="$((${PV/*_p/} - 1)).1" # stupid hack because _p may not contain .
+DESCRIPTION="Apple branch of the GNU Compiler Collection, Developer Tools 3.2.1"
+HOMEPAGE="http://gcc.gnu.org"
+SRC_URI="http://www.opensource.apple.com/darwinsource/tarballs/other/gcc-${APPLE_VERS}.tar.gz
+ http://www.opensource.apple.com/darwinsource/tarballs/other/libstdcxx-16.tar.gz
+ http://www.opensource.apple.com/darwinsource/tarballs/other/libstdcxx-39.tar.gz
+ fortran? ( mirror://gnu/gcc/gcc-4.2.4/gcc-fortran-4.2.4.tar.bz2 )"
+LICENSE="GPL-2 GPL-3"
+
+if [[ ${CHOST#*-darwin} -ge 9 ]] ; then
+ LIBSTDCXX_APPLE_VERSION=39
+else
+ # pre Leopard has no dtrace, which is required by 37.11 and above
+ LIBSTDCXX_APPLE_VERSION=16
+fi
+
+if is_crosscompile; then
+ SLOT="${CTARGET}-42"
+else
+ SLOT="42"
+fi
+
+KEYWORDS="~ppc-macos ~x64-macos ~x86-macos"
+
+IUSE="fortran nls objc objc++ nocxx"
+
+RDEPEND=">=sys-libs/zlib-1.1.4
+ >=sys-libs/ncurses-5.2-r2
+ nls? ( sys-devel/gettext )
+ >=sys-devel/gcc-config-1.3.12-r4
+ fortran? (
+ >=dev-libs/gmp-4.2.1
+ >=dev-libs/mpfr-2.2.0_p10
+ )"
+DEPEND="${RDEPEND}
+ >=sys-apps/texinfo-4.2-r4
+ >=sys-devel/bison-1.875
+ ${CATEGORY}/binutils-apple
+ >=dev-libs/mpfr-2.2.0_p10"
+
+S=${WORKDIR}/gcc-${APPLE_VERS}
+
+# TPREFIX is the prefix of the CTARGET installation
+export TPREFIX=${TPREFIX:-${EPREFIX}}
+
+LIBPATH=${EPREFIX}/usr/lib/gcc/${CTARGET}/${GCC_VERS}
+if is_crosscompile ; then
+ BINPATH=${EPREFIX}/usr/${CHOST}/${CTARGET}/gcc-bin/${GCC_VERS}
+else
+ BINPATH=${EPREFIX}/usr/${CTARGET}/gcc-bin/${GCC_VERS}
+fi
+STDCXX_INCDIR=${LIBPATH}/include/g++-v${GCC_VERS/\.*/}
+
+src_unpack() {
+ # override toolchain.eclass func
+ unpack ${A}
+}
+
+src_prepare() {
+ # Support for fortran
+ if use fortran ; then
+ mv "${WORKDIR}"/gcc-4.2.4/gcc/fortran gcc/ || die
+ mv "${WORKDIR}"/gcc-4.2.4/libgfortran . || die
+ # from: substracted from http://r.research.att.com/tools/
+ epatch "${FILESDIR}"/${PN}-4.2.1_p5646-gfortran.patch
+ fi
+
+ # move in libstdc++
+ mv "${WORKDIR}"/libstdcxx-${LIBSTDCXX_APPLE_VERSION}/libstdcxx/libstdc++-v3 .
+ if [[ ${LIBSTDCXX_APPLE_VERSION} == 16 ]] ; then
+ epatch "${FILESDIR}"/libstdc++-${LIBSTDCXX_APPLE_VERSION}.patch # does it apply on 37?
+ sed -i -e 's/__block\([^_]\)/__blk\1/g' \
+ libstdc++-v3/include/ext/mt_allocator.h \
+ libstdc++-v3/src/mt_allocator.cc || die "conflict fix failed"
+ fi
+
+ # we use our libtool
+ sed -i -e "s:/usr/bin/libtool:${EPREFIX}/usr/bin/${CTARGET}-libtool:" \
+ gcc/config/darwin.h || die "sed gcc/config/darwin.h failed"
+ # add prefixed Frameworks to default search paths (may want to change this
+ # in a cross-compile)
+ sed -i -e "/\"\/System\/Library\/Frameworks\"\,/i\ \ \"${EPREFIX}/Frameworks\"\, " \
+ gcc/config/darwin-c.c || die "sed gcc/config/darwin-c.c failed"
+
+ # Workaround deprecated "+Nc" syntax for GNU tail(1)
+ sed -i -e "s:tail +16c:tail -c +16:g" \
+ gcc/Makefile.in || die "sed gcc/Makefile.in failed."
+
+ epatch "${FILESDIR}"/${PN}-4.0.1_p5465-default-altivec.patch
+ #epatch "${FILESDIR}"/${PN}-4.2.1_p5566-x86_64-defines.patch
+
+ # dsymutil stuff breaks on 10.4/x86, revert it
+ [[ ${CHOST} == *86*-apple-darwin8 ]] && \
+ epatch "${FILESDIR}"/${PN}-${GCC_VERS}-dsymutil.patch
+
+ # bootstrapping might fail with host provided gcc on 10.4/x86
+ if ! is_crosscompile && ! echo "int main(){return 0;}" | gcc -o "${T}"/foo \
+ -mdynamic-no-pic -x c - >/dev/null 2>&1;
+ then
+ einfo "-mdynamic-no-pic doesn't work - disabling..."
+ echo "BOOT_CFLAGS=-g -O2" > config/mh-x86-darwin
+ XD=gcc/config/i386/x-darwin
+ awk 'BEGIN{x=1}{if ($0 ~ "use -mdynamic-no-pic to build x86")
+ {x=1-x} else if (x) print}' $XD > t && mv t $XD \
+ || die "Failed to rewrite $XD"
+ fi
+
+ epatch "${FILESDIR}"/${PN}-4.2.1-prefix-search-dirs.patch
+ eprefixify "${S}"/gcc/gcc.c
+
+ epatch "${FILESDIR}"/${PN}-${GCC_VERS}-texinfo.patch
+ cd "${S}"/gcc && eautoconf
+ cd "${S}"/libgomp && eautoconf
+
+ local BRANDING_GCC_PKGVERSION="$(sed -n -e '/^#define VERSUFFIX/s/^[^"]*"\([^"]\+\)".*$/\1/p' "${S}"/gcc/version.c)"
+ BRANDING_GCC_PKGVERSION=${BRANDING_GCC_PKGVERSION/)/, Gentoo ${PVR})}
+ einfo "patching gcc version: ${GCC_VERS}${BRANDING_GCC_PKGVERSION}"
+
+ sed -i -e "s~VERSUFFIX \"[^\"]*~VERSUFFIX \"${BRANDING_GCC_PKGVERSION}~" \
+ "${S}"/gcc/version.c || die "failed to update VERSUFFIX with Gentoo branding"
+ sed -i -e 's~developer\.apple\.com\/bugreporter~bugs\.gentoo\.org\/~' \
+ "${S}"/gcc/version.c || die "Failed to change the bug URL"
+}
+
+src_configure() {
+ local langs="c"
+ use nocxx || langs="${langs},c++"
+ use objc && langs="${langs},objc"
+ use objc++ && langs="${langs/,objc/},objc,obj-c++" # need objc with objc++
+ use fortran && langs="${langs},fortran"
+
+ local myconf="${myconf} \
+ --prefix=${EPREFIX}/usr \
+ --bindir=${BINPATH} \
+ --includedir=${LIBPATH}/include \
+ --datadir=${EPREFIX}/usr/share/gcc-data/${CTARGET}/${GCC_VERS} \
+ --mandir=${EPREFIX}/usr/share/gcc-data/${CTARGET}/${GCC_VERS}/man \
+ --infodir=${EPREFIX}/usr/share/gcc-data/${CTARGET}/${GCC_VERS}/info \
+ --with-gxx-include-dir=${STDCXX_INCDIR} \
+ --host=${CHOST}
+ --enable-version-specific-runtime-libs"
+
+ if is_crosscompile ; then
+ # Straight from the GCC install doc:
+ # "GCC has code to correctly determine the correct value for target
+ # for nearly all native systems. Therefore, we highly recommend you
+ # not provide a configure target when configuring a native compiler."
+ myconf="${myconf} --target=${CTARGET}"
+
+ # Tell compiler where to find what it needs
+ myconf="${myconf} --with-sysroot=${EPREFIX}/usr/${CTARGET}"
+
+ # Set this to something sane for both native and target
+ CFLAGS="-O2 -pipe"
+
+ local VAR="CFLAGS_"${CTARGET//-/_}
+ CXXFLAGS=${!VAR}
+ fi
+ [[ -n ${CBUILD} ]] && myconf="${myconf} --build=${CBUILD}"
+
+ # Native Language Support
+ if use nls ; then
+ myconf="${myconf} --enable-nls --without-included-gettext"
+ else
+ myconf="${myconf} --disable-nls"
+ fi
+
+ # reasonably sane globals (hopefully)
+ myconf="${myconf} \
+ --with-system-zlib \
+ --disable-checking \
+ --disable-werror"
+
+ # ???
+ myconf="${myconf} --enable-shared --enable-threads=posix"
+
+ # make clear we're in an offset
+ use prefix && myconf="${myconf} --with-local-prefix=${TPREFIX}/usr"
+
+ # we don't use a GNU linker, so tell GCC where to find the linker stuff we
+ # want it to use
+ myconf="${myconf} \
+ --with-as=${EPREFIX}/usr/bin/${CTARGET}-as \
+ --with-ld=${EPREFIX}/usr/bin/${CTARGET}-ld"
+
+ # make sure we never do multilib stuff, for that we need a different Prefix
+ [[ -z ${I_KNOW_WHAT_IM_DOING_I_WANT_APPLE_MULTILIB} ]] \
+ && myconf="${myconf} --disable-multilib"
+
+ #libstdcxx does not support this one
+ myconf="${myconf} --enable-languages=${langs}"
+
+ # The produced libgcc_s.dylib is faulty if using a bit too much
+ # optimisation. Nail it down to something sane
+ CFLAGS="-O2 -pipe"
+ CXXFLAGS=${CFLAGS}
+
+ # http://gcc.gnu.org/ml/gcc-patches/2006-11/msg00765.html
+ # (won't hurt if already 64-bits, but is essential when coming from a
+ # multilib compiler -- the default)
+ [[ ${CTARGET} == powerpc64-* || ${CTARGET} == x86_64-* ]] && \
+ export CC="gcc -m64"
+
+ mkdir -p "${WORKDIR}"/build
+ cd "${WORKDIR}"/build
+ einfo "Configuring GCC with: ${myconf//--/\n\t--}"
+ "${S}"/configure ${myconf} || die "conf failed"
+}
+
+src_compile() {
+ cd "${WORKDIR}"/build || die
+ emake bootstrap || die "emake failed"
+}
+
+src_install() {
+ cd "${WORKDIR}"/build
+ # -jX doesn't work
+ emake -j1 DESTDIR="${D}" install || die
+
+ # Punt some tools which are really only useful while building gcc
+ find "${ED}" -name install-tools -prune -type d -exec rm -rf "{}" \;
+ # This one comes with binutils
+ find "${ED}" -name libiberty.a -exec rm -f "{}" \;
+
+ # Basic sanity check
+ if ! is_crosscompile ; then
+ local EXEEXT
+ eval $(grep ^EXEEXT= "${WORKDIR}"/build/gcc/config.log)
+ [[ -r ${D}${BINPATH}/gcc${EXEEXT} ]] || die "gcc not found in ${ED}"
+ fi
+
+ # create gcc-config entry
+ dodir /etc/env.d/gcc
+ local gcc_envd_base="/etc/env.d/gcc/${CHOST}-${GCC_VERS}"
+
+ gcc_envd_file="${ED}${gcc_envd_base}"
+
+ # phase PATH/ROOTPATH out ...
+ echo "PATH=\"${BINPATH}\"" > ${gcc_envd_file}
+ echo "ROOTPATH=\"${BINPATH}\"" >> ${gcc_envd_file}
+ echo "GCC_PATH=\"${BINPATH}\"" >> ${gcc_envd_file}
+
+ # we don't do multilib
+ LDPATH="${LIBPATH}"
+ echo "LDPATH=\"${LDPATH}\"" >> ${gcc_envd_file}
+ echo "MANPATH=\"${EPREFIX}/usr/share/gcc-data/${CHOST}/${GCC_VERS}/man\"" >> ${gcc_envd_file}
+ echo "INFOPATH=\"${EPREFIX}/usr/share/gcc-data/${CHOST}/${GCC_VERS}/info\"" >> ${gcc_envd_file}
+ echo "STDCXX_INCDIR=\"g++-v${GCC_VERS/\.*/}\"" >> ${gcc_envd_file}
+ is_crosscompile && echo "CTARGET=${CTARGET}" >> ${gcc_envd_file}
+
+ # Move <cxxabi.h> to compiler-specific directories
+ [[ -f ${D}${STDCXX_INCDIR}/cxxabi.h ]] && \
+ mv -f "${D}"${STDCXX_INCDIR}/cxxabi.h "${D}"${LIBPATH}/include/
+
+ # These should be symlinks
+ dodir /usr/bin
+ cd "${D}"${BINPATH}
+ for x in cpp gcc g++ c++ g77 gcj gcjh gfortran ; do
+ # For some reason, g77 gets made instead of ${CTARGET}-g77...
+ # this should take care of that
+ [[ -f ${x} ]] && mv ${x} ${CTARGET}-${x}
+
+ if [[ -f ${CTARGET}-${x} ]] && ! is_crosscompile ; then
+ ln -sf ${CTARGET}-${x} ${x}
+
+ # Create version-ed symlinks
+ dosym ${BINPATH#${EPREFIX}}/${CTARGET}-${x} \
+ /usr/bin/${CTARGET}-${x}-${GCC_VERS}
+ dosym ${BINPATH#${EPREFIX}}/${CTARGET}-${x} \
+ /usr/bin/${x}-${GCC_VERS}
+ fi
+
+ if [[ -f ${CTARGET}-${x}-${GCC_VERS} ]] ; then
+ rm -f ${CTARGET}-${x}-${GCC_VERS}
+ ln -sf ${CTARGET}-${x} ${CTARGET}-${x}-${GCC_VERS}
+ fi
+ done
+
+ # I do not know if this will break gcj stuff, so I'll only do it for
+ # objc for now; basically "ffi.h" is the correct file to include,
+ # but it gets installed in .../GCCVER/include and yet it does
+ # "#include <ffitarget.h>" which (correctly, as it's an "extra" file)
+ # is installed in .../GCCVER/include/libffi; the following fixes
+ # ffi.'s include of ffitarget.h - Armando Di Cianno <fafhrd@gentoo.org>
+ if [[ -d ${D}${LIBPATH}/include/libffi ]] ; then
+ mv -i "${D}"${LIBPATH}/include/libffi/* "${D}"${LIBPATH}/include || die
+ rm -r "${D}"${LIBPATH}/include/libffi || die
+ fi
+
+ # Now do the fun stripping stuff
+ env RESTRICT="" CHOST=${CHOST} prepstrip "${D}${BINPATH}"
+ env RESTRICT="" CHOST=${CTARGET} prepstrip "${D}${LIBPATH}"
+ # gcc used to install helper binaries in lib/ but then moved to libexec/
+ [[ -d ${ED}/usr/libexec/gcc ]] && \
+ env RESTRICT="" CHOST=${CHOST} prepstrip "${ED}/usr/libexec/gcc/${CTARGET}/${GCC_VERS}"
+
+ # prune empty dirs left behind
+ find "${ED}" -type d | xargs rmdir >& /dev/null
+}
+
+pkg_postinst() {
+ # beware this also switches when it's on another branch version of GCC
+ gcc-config ${CTARGET}-${GCC_VERS}
+}
+
+pkg_postrm() {
+ # clean up the cruft left behind by cross-compilers
+ if is_crosscompile ; then
+ if [[ -z $(ls "${EROOT}"/etc/env.d/gcc/${CTARGET}* 2>/dev/null) ]] ; then
+ rm -f "${EROOT}"/etc/env.d/gcc/config-${CTARGET}
+ rm -f "${EROOT}"/etc/env.d/??gcc-${CTARGET}
+ rm -f "${EROOT}"/usr/bin/${CTARGET}-{gcc,{g,c}++}{,32,64}
+ fi
+ return 0
+ fi
+}