gcc-runtime: Add initial recipe

Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
Richard Purdie 2010-03-29 22:27:13 +01:00
parent 7a7c2341c7
commit cdaf6c804b
10 changed files with 142 additions and 115 deletions

View File

@ -0,0 +1,5 @@
require gcc-configure-common.inc
EXTRA_OECONF_PATHS = " \
--with-local-prefix=${STAGING_DIR_TARGET}${prefix} \
--with-gxx-include-dir=${includedir}/c++/${BINV}/"

View File

@ -3,4 +3,3 @@ require gcc-configure-common.inc
EXTRA_OECONF_PATHS = " \
--with-local-prefix=${STAGING_DIR_TARGET}${prefix} \
--with-gxx-include-dir=${includedir}/c++/${BINV}/"

View File

@ -17,3 +17,7 @@ EXTRA_OECONF = "--with-local-prefix=${STAGING_DIR_TARGET}${target_prefix} \
--with-sysroot=${STAGING_DIR_TARGET} \
--with-build-sysroot=${STAGING_DIR_TARGET} \
${@get_gcc_fpu_setting(bb, d)}"
do_compile () {
oe_runmake
}

View File

@ -16,6 +16,10 @@ EXTRA_OECONF = "--with-local-prefix=${STAGING_DIR_TARGET}${target_prefix} \
--with-build-sysroot=${STAGING_DIR_TARGET} \
${@get_gcc_fpu_setting(bb, d)}"
do_compile () {
oe_runmake
}
do_install () {
oe_runmake 'DESTDIR=${D}' install
}

View File

@ -1,4 +1,4 @@
PR = "r7"
PR = "r10"
require gcc-${PV}.inc
require gcc-cross4.inc
@ -10,3 +10,7 @@ SRC_URI_append_fail-fast = " file://zecke-no-host-includes.patch;patch=1 "
EXTRA_OECONF += "--disable-libunwind-exceptions --with-mpfr=${STAGING_DIR_NATIVE}${prefix_native}"
ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_DIR_TARGET}${target_includedir}"
do_compile () {
oe_runmake all-host
}

View File

@ -1,42 +1,11 @@
INHIBIT_PACKAGE_STRIP ?= ""
OLD_INHIBIT_PACKAGE_STRIP := "${INHIBIT_PACKAGE_STRIP}"
INHIBIT_PACKAGE_STRIP = "1"
PACKAGES = "libgcc libssp libstdc++ libg2c libgfortran"
# Called from within gcc-cross, so libdir is set wrong
FILES_libg2c = "${target_libdir}/libg2c.so.*"
FILES_libssp = "${target_libdir}/libssp.so.*"
FILES_libgfortran = "${target_libdir}/libgfortran.so.*"
FILES_libgcc = "${target_base_libdir}/libgcc_s.so.1"
FILES_libstdc++ = "${target_libdir}/libstdc++.so.*"
do_install () {
oe_runmake 'DESTDIR=${D}' install
oe_runmake 'DESTDIR=${D}' install-host
install -d ${D}${target_base_libdir}
install -d ${D}${target_libdir}
for d in ${TARGET_SYS}/lib/nof ${TARGET_SYS}/lib64 ${TARGET_SYS}/lib; do
if [ -d ${D}${prefix}/$d/ ]; then
mv -f ${D}${prefix}/$d/libgcc* ${D}${target_base_libdir} || true
mv -f ${D}${prefix}/$d/* ${D}${target_libdir} || true
fi
done
# Manually run the target stripper since we won't get it run by
# the packaging.
if [ "x${OLD_INHIBIT_PACKAGE_STRIP}" != "x1" ]; then
${TARGET_PREFIX}strip ${D}${target_libdir}/libstdc++.so.* || true
${TARGET_PREFIX}strip ${D}${target_libdir}/libg2c.so.* || true
${TARGET_PREFIX}strip ${D}${target_base_libdir}/libgcc_s.so.* || true
${TARGET_PREFIX}strip ${D}${target_libdir}/libgfortran*.so* || true
fi
# Link gfortran to g77 to satisfy not-so-smart configure or hard coded g77
# gfortran is fully backwards compatible. This is a safe and practical solution.
ln -sf ${CROSS_DIR}/bin/${TARGET_PREFIX}gfortran ${CROSS_DIR}/bin/${TARGET_PREFIX}g77 || true
@ -47,12 +16,9 @@ do_install () {
rm -rf ${D}${CROSS_DIR}/$d
done
#fix up libsupc++ and libstdc++ la files
for f in libssp.la libssp_nonshared.la libsupc++.la libstdc++.la ; do
# Remove any -L options from dependency_libs - we should never need them as the
# files are in the sysroot
sed -i "s|\(dependency_libs\s*=.*\)-L\s*[^ ]*\(.*\)|\1\2|g" ${D}${target_libdir}/$f || true
# Set libdir correctly
sed -i "s|libdir\s*=.*|libdir='${target_libdir}'|g" ${D}${target_libdir}/$f || true
# gcc-runtime requires some headers, we stash them here
install -d ${D}${includedir}/gcc-build-internal
for f in auto-host.h gcov-iov.h gthr-default.h libgcc.mvars options.h tconfig.h tm.h; do
cp ${B}/gcc/$f ${D}${includedir}/gcc-build-internal/
done
}

View File

@ -0,0 +1,70 @@
PACKAGES = "\
libgcc \
libgcc-dev \
libstdc++ \
libstdc++-precompile-dev \
libstdc++-dev \
libg2c \
libg2c-dev \
libssp \
libssp-dev \
libgfortran \
libgfortran-dev \
libmudflap \
libmudflap-dev \
"
FILES_libgcc = "${base_libdir}/libgcc*.so.*"
FILES_libgcc-dev = " \
${base_libdir}/libgcc*.so \
${libdir}/gcc/${TARGET_SYS}/${BINV}/crt* \
${libdir}/gcc/${TARGET_SYS}/${BINV}/libgcc*"
FILES_libg2c = "${target_libdir}/libg2c.so.*"
FILES_libg2c-dev = "\
${libdir}/libg2c.so \
${libdir}/libg2c.a \
${libdir}/libfrtbegin.a"
FILES_libstdc++ = "${libdir}/libstdc++.so.*"
FILES_libstdc++-dev = "\
${includedir}/c++/${BINV} \
${libdir}/libstdc++.so \
${libdir}/libstdc++.la \
${libdir}/libstdc++.a \
${libdir}/libsupc++.la \
${libdir}/libsupc++.a"
FILES_libstdc++-precompile-dev = "${includedir}/c++/${BINV}/${TARGET_SYS}/bits/*.gch"
FILES_libssp = "${libdir}/libssp.so.*"
FILES_libssp-dev = " \
${libdir}/libssp*.so \
${libdir}/libssp*.a \
${libdir}/libssp*.la \
${libdir}/gcc/${TARGET_SYS}/${BINV}/include/ssp"
FILES_libgfortran = "${libdir}/libgfortran.so.*"
FILES_libgfortran-dev = " \
${libdir}/libgfortran.a \
${libdir}/libgfortran.so \
${libdir}/libgfortranbegin.a"
FILES_libmudflap = "${libdir}/libmudflap*.so.*"
FILES_libmudflap-dev = "\
${libdir}/libmudflap*.so \
${libdir}/libmudflap*.a \
${libdir}/libmudflap*.la"
do_install () {
oe_runmake 'DESTDIR=${D}' install-target
# Move libgcc_s into /lib
mkdir -p ${D}${base_libdir}
if [ -f ${D}${libdir}/nof/libgcc_s.so ]; then
mv ${D}${libdir}/nof/libgcc* ${D}${base_libdir}
else
mv ${D}${libdir}/libgcc* ${D}${base_libdir} || true
fi
}

View File

@ -1,5 +1,3 @@
INHIBIT_PACKAGE_STRIP ?= ""
OLD_INHIBIT_PACKAGE_STRIP := "${INHIBIT_PACKAGE_STRIP}"
INHIBIT_PACKAGE_STRIP = "1"
# Having anything auto depending on gcc-cross-sdk is a really bad idea...
@ -30,7 +28,7 @@ FILES_${PN}-doc = "\
"
do_install () {
oe_runmake 'DESTDIR=${D}' install
oe_runmake 'DESTDIR=${D}' install-host
# Cleanup some of the ${libdir}{,exec}/gcc stuff ...
rm -r ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/install-tools
@ -52,13 +50,5 @@ do_install () {
ln -sf "${bindir}/`basename $l`" "${D}${prefix}/${TARGET_SYS}/bin/`basename $l | sed -e 's,${TARGET_PREFIX},,'`"
done
ln -sf "${bindir}/${TARGET_PREFIX}gcc" "${D}${prefix}/${TARGET_SYS}/bin/cc"
# Manually run the target stripper since we won't get it run by
# the packaging.
if [ "x${OLD_INHIBIT_PACKAGE_STRIP}" != "x1" ]; then
${TARGET_PREFIX}strip ${D}${prefix}/${TARGET_SYS}/lib/libstdc++.so.*
${TARGET_PREFIX}strip ${D}${prefix}/${TARGET_SYS}/lib/libg2c.so.* || true
${TARGET_PREFIX}strip ${D}${prefix}/${TARGET_SYS}/lib/libgcc_s.so.*
fi
}

View File

@ -5,11 +5,6 @@ PACKAGES = "\
g77 g77-symlinks \
gfortran gfortran-symlinks \
gcov gcov-symlinks \
libmudflap libmudflap-dev \
libgcc-dev \
libstdc++-dev \
libg2c-dev \
libgfortran-dev \
${PN}-doc \
"
@ -54,17 +49,6 @@ FILES_cpp-symlinks = "${bindir}/cpp"
FILES_gcov = "${bindir}/${TARGET_PREFIX}gcov"
FILES_gcov-symlinks = "${bindir}/gcov"
FILES_libgcc = "${base_libdir}/libgcc*.so.*"
FILES_libgcc-dev = "${base_libdir}/libgcc*.so"
# Called from within gcc-cross, so libdir is set wrong
FILES_libg2c = "${target_libdir}/libg2c.so.*"
FILES_libg2c-dev = "\
${libdir}/libg2c.so \
${libdir}/libg2c.a \
${libdir}/libfrtbegin.a \
"
FILES_g++ = "\
${bindir}/${TARGET_PREFIX}g++ \
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1plus \
@ -74,26 +58,6 @@ FILES_g++-symlinks = "\
${bindir}/g++ \
"
FILES_libstdc++ = "${libdir}/libstdc++.so.*"
FILES_libstdc++-dev = "\
${includedir}/c++/${BINV} \
${libdir}/libstdc++.so \
${libdir}/libstdc++.la \
${libdir}/libstdc++.a \
${libdir}/libsupc++.la \
${libdir}/libsupc++.a \
"
FILES_libgfortran-dev = "${libdir}/libgfortran.a \
${libdir}/libgfortran.so \
${libdir}/libgfortranbegin.a"
FILES_libmudflap = "${libdir}/libmudflap*.so.*"
FILES_libmudflap-dev = "\
${libdir}/libmudflap*.so \
${libdir}/libmudflap*.a \
${libdir}/libmudflap*.a \
"
FILES_${PN}-doc = "\
${infodir} \
@ -102,7 +66,7 @@ FILES_${PN}-doc = "\
"
do_install () {
autotools_do_install
oe_runmake 'DESTDIR=${D}' install-host
# Cleanup some of the ${libdir}{,exec}/gcc stuff ...
rm -r ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/install-tools
@ -111,28 +75,9 @@ do_install () {
# Hack around specs file assumptions
test -f ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/specs && sed -i -e '/^*cross_compile:$/ { n; s/1/0/; }' ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/specs
# Move libgcc_s into /lib
mkdir -p ${D}${base_libdir}
if [ -f ${D}${libdir}/nof/libgcc_s.so ]; then
mv ${D}${libdir}/nof/libgcc_s.so.* ${D}${base_libdir}
else
mv ${D}${libdir}/libgcc_s.so.* ${D}${base_libdir} || true
fi
rm -f ${D}${libdir}/libgcc_s.so || true
ln -sf `echo ${libdir}/gcc/${TARGET_SYS}/${BINV} \
| tr -s / \
| sed -e 's,^/,,' -e 's,[^/]*,..,g'`/lib/libgcc_s.so.1 \
${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/libgcc_s.so
# We don't need libtool libraries
rm -f ${D}${libdir}/libg2c.la &>/dev/null || true
# Cleanup manpages..
rm -rf ${D}${mandir}/man7
# We use libiberty from binutils
rm -f ${D}${libdir}/libiberty.a
cd ${D}${bindir}
# We care about g++ not c++
@ -141,9 +86,6 @@ do_install () {
# We don't care about the gcc-<version> ones for this
rm -f *gcc-?.?*
# These sometimes show up, they are strange, we remove them
rm -f ${TARGET_ARCH}-*${TARGET_ARCH}-*
# Symlinks so we can use these trivially on the target
ln -sf ${TARGET_SYS}-g77 g77 || true
ln -sf ${TARGET_SYS}-gfortran gfortran || true
@ -155,7 +97,4 @@ do_install () {
ln -sf gcc cc
ln -sf ${bindir}/${TARGET_SYS}-cpp ${D}${base_libdir}/cpp
ln -sf ${bindir}/${TARGET_SYS}-cpp ${D}${bindir}/cpp
# Remove precompiled c++ headers as they are really big
rm -rf ${D}${includedir}/c++/${BINV}/${TARGET_SYS}/bits/*.gch
}

View File

@ -0,0 +1,46 @@
PR = "r10"
require gcc-${PV}.inc
require gcc-configure-runtime.inc
require gcc-package-runtime.inc
SRC_URI_append = "file://fortran-cross-compile-hack.patch;patch=1"
ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_INCDIR}"
RUNTIMETARGET = "libgcc libssp libstdc++-v3"
# ?
# libiberty
# libmudflap
# libgfortran
do_configure () {
cp ${CROSS_DIR}/include/gcc-build-internal/* ${S}/gcc
for d in ${RUNTIMETARGET}; do
echo "Configuring $d"
mkdir -p ${B}/$d/
cd ${B}/$d/
chmod a+x ${S}/$d/configure
${S}/$d/configure ${CONFIGUREOPTS}
done
}
do_compile () {
for d in ${RUNTIMETARGET}; do
cd ${B}/$d/
oe_runmake
done
}
do_install () {
for d in ${RUNTIMETARGET}; do
cd ${B}/$d/
oe_runmake 'DESTDIR=${D}' install
done
}
INHIBIT_DEFAULT_DEPS = "1"
DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
PROVIDES = "virtual/${TARGET_PREFIX}compilerlibs"
BBCLASSEXTEND = "nativesdk"