COPYING
author Bryan Hundven <bryanhundven@gmail.com>
Sun Jun 26 03:26:54 2011 -0700 (2011-06-26)
changeset 2515 364b06df9e3a
parent 676 78c450c0b219
permissions -rw-r--r--
glibc: Refactor startfiles/headers into do_libc_backend()

Refactor the contents of 'do_libc_start_files()' and 'do_libc()' into a
parameterized 'do_libc_backend()'. 'do_libc_start_files()' and 'do_libc()'
call 'do_libc_backend()' with either 'libc_mode=startfiles' or
'libc_mode=final' (respectively) so that the startfiles/headers and
the final libc builds are configured and built with the same options.

One example of where this is needed is when building a mips toolchain.
Previously, if you were building an n32 toolchain, you wouldn't have
noticed an issue, because if '-mabi' is not in CFLAGS, n32 is the
default:

http://sourceware.org/git/?p=glibc-ports.git;a=blob;f=sysdeps/mips/preconfigure;hb=HEAD

But when trying to build an o32 or n64 toolchain the build would
have failed. This is because (e)glibc expects "-mabi={o32,n32,n64}" to be
in CFLAGS, but was not previously provided in 'do_libc_start_files()'.
The build failure would happen in the shared-core gcc when it tries to
configure an n64 or o32 gcc with an n32 libc.

A simpler solution would have been to just add TARGET_CFLAGS to configure
in 'do_libc_start_files()', but this way makes configure and make
consistent for both steps.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
yann@425
     1
Unless otherwise stated in individual files, this work is licensed to you under
yann@1
     2
the following terms.
yann@1
     3
yann@1
     4
- Files in docs/ are available under the Creative Commons Attribution, Share
yann@1
     5
  Alike (by-sa), v2.5, to be found there:
yann@17
     6
    licenses.d/by-sa/deed.en     (human-readable summary)
yann@17
     7
    licenses.d/by-sa/legalcode   (legal code, the full license)
yann@1
     8
    
yann@191
     9
- Files found in patches/*/ are available under the same license as the
yann@338
    10
  upstream software they apply to.
yann@338
    11
yann@338
    12
  That means that you can't use those patches if you were licensed the
yann@338
    13
  software under a specific license which is not the one the software is
yann@338
    14
  commonly available under.
yann@338
    15
yann@338
    16
  As an example, if you ever managed to get the Linux kernel under a license
yann@338
    17
  other than the GPLv2, you are not allowed to use the Linux kernel patches
yann@338
    18
  coming with crosstool-NG, as those are available under the GPLv2, which is
yann@338
    19
  the license the Linux kernel is most commonly available under.
yann@338
    20
yann@338
    21
  As a convenience, the GNU Lesser General Public License (LGPL) v2.1 (for the
yann@853
    22
  patches against glibc, uClibc, and some other libraries) is available there:
yann@338
    23
    licenses.d/lgpl.txt
yann@1
    24
yann@1
    25
- Other files not covered by the above licenses, and not covered by an
yann@1
    26
  individual license specified in the file itself, or an accompanying file,
yann@1
    27
  are available under the GNU General Public License (GPL), v2, to be found
yann@1
    28
  here:
yann@17
    29
    licenses.d/gpl.txt
yann@676
    30
yann@676
    31
- Also, I want to clarify one point. If you build a toolchain with crosstool-NG
yann@676
    32
  and you happen to sell, deliver, or otherwise publish this toolchain to a
yann@676
    33
  third party, I consider crosstool-NG as being part of the sources needed to
yann@676
    34
  rebuild the afore-mentioned toolchain, alongside with all other source code
yann@676
    35
  that third party is otherwise entitled to receive, due to other licenses of
yann@676
    36
  the different components. See licenses.d/gpl.txt, section 3, which reads:
yann@676
    37
   > For an executable work, complete source code means [...], plus the
yann@676
    38
   > scripts used to control compilation and installation of the executable.
yann@676
    39
yann@676
    40
  In short: crosstool-NG is the part refered to as "the scripts to control
yann@853
    41
  compilation and installation of the executable", it being the toolchain in
yann@676
    42
  our case; and as such you must make it available, in conformance to the
yann@676
    43
  GPLv2, see above.
yann@853
    44
yann@853
    45
  Also, if you have local patches that you apply to the different components
yann@853
    46
  (either manualy, or by instructing crosstool-NG to do so), you will have to
yann@853
    47
  make those patches available alongside with your toolchain, to comply with
yann@853
    48
  the licenses of the components impacted by your patches.