diff options
author | Mike Frysinger <vapier@gentoo.org> | 2007-08-06 09:46:50 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2007-08-06 09:46:50 +0000 |
commit | 31a76a74aad2b8e2b4ae3922a89492daf3587c14 (patch) | |
tree | 64bcda7218cafe29243faaef996170c47bc1b27e /sys-libs/glibc/files/eblits/src_compile.eblit | |
parent | Always add /lib and /usr/lib to our search paths for ldconfig. (diff) | |
download | historical-31a76a74aad2b8e2b4ae3922a89492daf3587c14.tar.gz historical-31a76a74aad2b8e2b4ae3922a89492daf3587c14.tar.bz2 historical-31a76a74aad2b8e2b4ae3922a89492daf3587c14.zip |
Introduce eblits.
Package-Manager: portage-2.1.3
Diffstat (limited to 'sys-libs/glibc/files/eblits/src_compile.eblit')
-rw-r--r-- | sys-libs/glibc/files/eblits/src_compile.eblit | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/sys-libs/glibc/files/eblits/src_compile.eblit b/sys-libs/glibc/files/eblits/src_compile.eblit new file mode 100644 index 000000000000..3fb3a9329fba --- /dev/null +++ b/sys-libs/glibc/files/eblits/src_compile.eblit @@ -0,0 +1,177 @@ +glibc_do_configure() { + local myconf + + # set addons + pushd "${S}" > /dev/null + local ADDONS=$(echo */configure | sed \ + -e 's:/configure::g' \ + -e 's:\(linuxthreads\|nptl\|rtkaio\|glibc-compat\)\( \|$\)::g' \ + -e 's: \+$::' \ + -e 's! !,!g' \ + -e 's!^!,!' \ + -e '/^,\*$/d') + [[ -d ports ]] && ADDONS="${ADDONS},ports" + popd > /dev/null + + use nls || myconf="${myconf} --disable-nls" + myconf="${myconf} $(use_enable hardened stackguard-randomization)" + if [[ $(<"${T}"/.ssp.compat) == "yes" ]] ; then + myconf="${myconf} --enable-old-ssp-compat" + else + myconf="${myconf} --disable-old-ssp-compat" + fi + + use glibc-omitfp && myconf="${myconf} --enable-omitfp" + + [[ ${CTARGET//_/-} == *-softfloat-* ]] && myconf="${myconf} --without-fp" + + if [[ $1 == "linuxthreads" ]] ; then + if want_tls ; then + myconf="${myconf} --with-tls" + + if ! want__thread || use glibc-compat20 || [[ ${LT_KER_VER} == 2.[02].* ]] ; then + myconf="${myconf} --without-__thread" + else + myconf="${myconf} --with-__thread" + fi + else + myconf="${myconf} --without-tls --without-__thread" + fi + + myconf="${myconf} --disable-sanity-checks" + myconf="${myconf} --enable-add-ons=linuxthreads${ADDONS}" + myconf="${myconf} --enable-kernel=${LT_KER_VER}" + elif [[ $1 == "nptl" ]] ; then + myconf="${myconf} --enable-add-ons=nptl${ADDONS}" + myconf="${myconf} --enable-kernel=${NPTL_KERN_VER}" + else + die "invalid pthread option" + fi + + # Since SELinux support is only required for nscd, only enable it if: + # 1. USE selinux + # 2. only for the primary ABI on multilib systems + if use selinux ; then + if use multilib || has_multilib_profile ; then + if is_final_abi ; then + myconf="${myconf} --with-selinux" + else + myconf="${myconf} --without-selinux" + fi + else + myconf="${myconf} --with-selinux" + fi + else + myconf="${myconf} --without-selinux" + fi + + myconf="${myconf} + --without-cvs + --enable-bind-now + --build=${CBUILD_OPT:-${CBUILD}} + --host=${CTARGET_OPT:-${CTARGET}} + $(use_enable profile) + --without-gd + --with-headers=$(alt_build_headers) + --prefix=/usr + --libdir=/usr/$(get_libdir) + --mandir=/usr/share/man + --infodir=/usr/share/info + --libexecdir=/usr/$(get_libdir)/misc/glibc + ${EXTRA_ECONF}" + + # There is no configure option for this and we need to export it + # since the glibc build will re-run configure on itself + export libc_cv_slibdir=/$(get_libdir) + + has_version app-admin/eselect-compiler || export CC=$(tc-getCC ${CTARGET}) + + local GBUILDDIR=${WORKDIR}/build-${ABI}-${CTARGET}-$1 + mkdir -p "${GBUILDDIR}" + cd "${GBUILDDIR}" + einfo "Configuring GLIBC for $1 with: ${myconf// /\n\t\t}" + "${S}"/configure ${myconf} || die "failed to configure glibc" + + # since we'll be punting them for cross-compilers, and they can cause + # problems (ia64+static), we'll just skip building altogether + is_crosscompile && sed -i '1ibuild-programs = no' config.make +} + +toolchain-glibc_src_compile() { + echo + local v + for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CFLAGS ; do + einfo " $(printf '%15s' ${v}:) ${!v}" + done + echo + + if want_linuxthreads ; then + glibc_do_configure linuxthreads + einfo "Building GLIBC with linuxthreads..." + make PARALLELMFLAGS="${MAKEOPTS}" || die "make for ${ABI} failed" + fi + if want_nptl ; then + # ... and then do the optional nptl build + unset LD_ASSUME_KERNEL + glibc_do_configure nptl + einfo "Building GLIBC with NPTL..." + make PARALLELMFLAGS="${MAKEOPTS}" || die "make for ${ABI} failed" + fi +} + +toolchain-glibc_headers_compile() { + local GBUILDDIR=${WORKDIR}/build-${ABI}-${CTARGET}-headers + mkdir -p "${GBUILDDIR}" + cd "${GBUILDDIR}" + + # Pick out the correct location for build headers + local ports="" myconf="--disable-sanity-checks --enable-hacker-mode" + [[ -d ports ]] && ports=",ports" + myconf="${myconf} + --enable-add-ons=nptl${ports} + --without-cvs + --enable-bind-now + --build=${CBUILD_OPT:-${CBUILD}} + --host=${CTARGET_OPT:-${CTARGET}} + --with-headers=$(alt_build_headers) + --prefix=/usr + ${EXTRA_ECONF}" + + # Nothing is compiled here which would affect the headers for the target. + # so forcing CC/CFLAGS is sane. unless you dont have `gcc`. then i + # dont care :p. + einfo "Configuring GLIBC headers with: ${myconf// /\n\t\t}" + CC=gcc \ + CFLAGS="-O1 -pipe" \ + "${S}"/configure ${myconf} || die "failed to configure glibc" +} + +eblit-glibc-src_compile() { + setup_env + + if [[ -z ${OABI} ]] ; then + local abilist="" + if has_multilib_profile ; then + abilist=$(get_install_abis) + einfo "Building multilib glibc for ABIs: ${abilist}" + elif is_crosscompile || tc-is-cross-compiler ; then + abilist=${DEFAULT_ABI} + fi + if [[ -n ${abilist} ]] ; then + OABI=${ABI} + for ABI in ${abilist} ; do + export ABI + src_compile + done + ABI=${OABI} + unset OABI + return 0 + fi + fi + + if just_headers ; then + toolchain-glibc_headers_compile + else + toolchain-glibc_src_compile + fi +} |