This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Bryan, All, On Monday 20 June 2011 09:44:21 Bryan Hundven wrote: > # HG changeset patch > # User Bryan Hundven <bryanhundven@gmail.com> > # Date 1308555696 25200 > # Node ID b25856d9153785d0f711206383480f0190aec363 > # Parent 2377be750e83defa6d764bcb8cf6dbaf098a19f6 > glibc: Refactor startfiles/headers into do_libc As I said on IRC: I really like that idea! > The 'do_libc_start_files()' function was configuring libc differently then > 'do_libc()'. This might be fine for arm(eb) or powerpc(64), but not for > mips(64). > > Move the building of the libc start files and headers into do_libc, much like > how gcc handles stage1, stage2, and final toolchains. Did you check that: - other archs were still OK? - both glibc and eglibc were still OK? Also, I'd prefer that we use a real backend function, a-la cc-core: do_libc_start_files() { do_libc_backend startfiles_mode=yes } do_libc() { do_libc_backend startfiles_mode=no } do_libc_backend() { # blabla } > diff -r 2377be750e83 -r b25856d91537 scripts/build/libc/glibc-eglibc.sh-common > --- a/scripts/build/libc/glibc-eglibc.sh-common Mon Jun 13 22:54:29 2011 +0400 > +++ b/scripts/build/libc/glibc-eglibc.sh-common Mon Jun 20 00:41:36 2011 -0700 [--SNIP-] > # This function builds and install the full C library > do_libc() { [--SNIP-] > @@ -316,16 +218,75 @@ > ;; > esac > > - CT_DoLog EXTRA "Building C library" > - CT_DoExecLog ALL make ${JOBSFLAGS} \ > - "${extra_make_args[@]}" \ > - all > + if [ "${startfile_mode}" = "yes" ]; then > + CT_DoLog EXTRA "Installing C library headers" > > - CT_DoLog EXTRA "Installing C library" > - CT_DoExecLog ALL make ${JOBSFLAGS} \ > - "${extra_make_args[@]}" \ > - install_root="${CT_SYSROOT_DIR}" \ > - install > + # use the 'install-headers' makefile target to install the > + # headers > + CT_DoExecLog ALL make ${JOBSFLAGS} \ > + install_root=${CT_SYSROOT_DIR} \ > + install-bootstrap-headers=yes \ > + install-headers What about the extra_make_args? It can contain preprocessor directives (eg. -DBROKEN_PPC_8xx_CPU15), so it might have an impact on headers... > + # For glibc, a few headers need to be manually installed > + if [ "${CT_LIBC}" = "glibc" ]; then > + # Two headers -- stubs.h and features.h -- aren't installed by install-headers, > + # so do them by hand. We can tolerate an empty stubs.h for the moment. > + # See e.g. http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html > + mkdir -p "${CT_HEADERS_DIR}/gnu" > + CT_DoExecLog ALL touch "${CT_HEADERS_DIR}/gnu/stubs.h" > + CT_DoExecLog ALL cp -v "${CT_SRC_DIR}/glibc-${CT_LIBC_VERSION}/include/features.h" \ > + "${CT_HEADERS_DIR}/features.h" > + > + # Building the bootstrap gcc requires either setting inhibit_libc, or > + # having a copy of stdio_lim.h... see > + # http://sources.redhat.com/ml/libc-alpha/2003-11/msg00045.html > + CT_DoExecLog ALL cp -v bits/stdio_lim.h "${CT_HEADERS_DIR}/bits/stdio_lim.h" > + > + # Following error building gcc-4.0.0's gcj: > + # error: bits/syscall.h: No such file or directory > + # solved by following copy; see http://sourceware.org/ml/crossgcc/2005-05/msg00168.html > + # but it breaks arm, see http://sourceware.org/ml/crossgcc/2006-01/msg00091.html > + case "${CT_ARCH}" in > + arm) ;; > + *) CT_DoExecLog ALL cp -v "misc/syscall-list.h" \ > + "${CT_HEADERS_DIR}/bits/syscall.h" > + ;; > + esac > + fi > + > + if [ "${CT_THREADS}" = "nptl" ]; then > + CT_DoLog EXTRA "Installing C library start files" > + > + # there are a few object files needed to link shared libraries, > + # which we build and install by hand > + CT_DoExecLog ALL mkdir -p "${CT_SYSROOT_DIR}/usr/lib" > + CT_DoExecLog ALL make ${JOBSFLAGS} csu/subdir_lib Ditto extra_make_args. > + CT_DoExecLog ALL cp csu/crt1.o csu/crti.o csu/crtn.o \ > + "${CT_SYSROOT_DIR}/usr/lib" > + > + # Finally, 'libgcc_s.so' requires a 'libc.so' to link against. > + # However, since we will never actually execute its code, > + # it doesn't matter what it contains. So, treating '/dev/null' > + # as a C source file, we produce a dummy 'libc.so' in one step > + CT_DoExecLog ALL "${cross_cc}" -nostdlib \ > + -nostartfiles \ > + -shared \ > + -x c /dev/null \ > + -o "${CT_SYSROOT_DIR}/usr/lib/libc.so" > + fi # threads == nptl > + else # startfile_mode = no > + CT_DoLog EXTRA "Building C library" > + CT_DoExecLog ALL make ${JOBSFLAGS} \ > + "${extra_make_args[@]}" \ > + all > + > + CT_DoLog EXTRA "Installing C library" > + CT_DoExecLog ALL make ${JOBSFLAGS} \ > + "${extra_make_args[@]}" \ > + install_root="${CT_SYSROOT_DIR}" \ > + install > + fi > > CT_EndStep > } > @@ -384,3 +345,5 @@ > ;; > esac > } > + > +# vim: ts=4 sw=4 et ai syn=sh Spurious line. We do not have vim syntax settings in the source code. Although I do indeed exclusively use vim. ;-) Regards. Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' -- For unsubscribe information see http://sourceware.org/lists.html#faq
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |