diff options
Diffstat (limited to 'packages/gcc')
-rw-r--r-- | packages/gcc/gcc-cross_3.3.3.bb | 97 | ||||
-rw-r--r-- | packages/gcc/gcc-cross_3.3.4.bb | 100 | ||||
-rw-r--r-- | packages/gcc/gcc-package.inc | 110 | ||||
-rw-r--r-- | packages/gcc/gcc3-cross-build.inc | 79 | ||||
-rw-r--r-- | packages/gcc/gcc_3.3.3.bb | 6 | ||||
-rw-r--r-- | packages/gcc/gcc_3.3.4.bb | 6 |
6 files changed, 392 insertions, 6 deletions
diff --git a/packages/gcc/gcc-cross_3.3.3.bb b/packages/gcc/gcc-cross_3.3.3.bb index e69de29bb2..c59ea0d37a 100644 --- a/packages/gcc/gcc-cross_3.3.3.bb +++ b/packages/gcc/gcc-cross_3.3.3.bb @@ -0,0 +1,97 @@ +SECTION = "devel" +include gcc_${PV}.bb +inherit cross +FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}" + +DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc" +PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++" + +# Files for these are defined in the main gcc.oe +PACKAGES = "libgcc libstdc++ libg2c" +INHIBIT_PACKAGE_STRIP = 1 + +EXTRA_OECONF_PATHS = "--with-local-prefix=${CROSS_DIR}/${TARGET_SYS} \ + --with-gxx-include-dir=${CROSS_DIR}/${TARGET_SYS}/include/c++" + +export CPPFLAGS = "" +export CXXFLAGS = "" +export CFLAGS = "" +export LDFLAGS = "" + +do_configure () { + export CC="${BUILD_CC}" + export AR="${TARGET_SYS}-ar" + export RANLIB="${TARGET_SYS}-ranlib" + export LD="${TARGET_SYS}-ld" + export NM="${TARGET_SYS}-nm" + rm -f ${CROSS_DIR}/lib/gcc-lib/${TARGET_SYS}/${PV}/libgcc_eh.a + (cd ${S} && gnu-configize) || die "failure running gnu-configize" + oe_runconf +} + +do_compile_prepend () { + export CC="${BUILD_CC}" + export AR_FOR_TARGET="${TARGET_SYS}-ar" + export RANLIB_FOR_TARGET="${TARGET_SYS}-ranlib" + export LD_FOR_TARGET="${TARGET_SYS}-ld" + export NM_FOR_TARGET="${TARGET_SYS}-nm" + export CC_FOR_TARGET="${CCACHE} ${TARGET_SYS}-gcc" +} + +do_stage_append () { + for d in info man share/doc share/locale ; do + rm -rf ${CROSS_DIR}/$d + done + + # These aren't useful on the cross toolchain + rm -f ${CROSS_DIR}/bin/*gcov + rm -f ${CROSS_DIR}/bin/*gccbug + + # Fix a few include links so cross builds are happier + if [ ! -e ${STAGING_INCDIR}/c++ ]; then + mkdir -p ${STAGING_INCDIR} + rm -f ${STAGING_INCDIR}/c++ + ln -sf ${CROSS_DIR}/${TARGET_SYS}/include/c++ \ + ${STAGING_INCDIR}/ + fi + + # We use libiberty from binutils + rm -f ${CROSS_DIR}/lib/libiberty.a + + # We probably don't need these + rmdir ${CROSS_DIR}/include || : + + # We don't really need to keep this around + rm -rf ${CROSS_DIR}/share +} + +python do_package() { + if bb.data.getVar('DEBIAN_NAMES', d, 1): + bb.data.setVar('PKG_libgcc', 'libgcc1', d) + bb.build.exec_func('package_do_package', d) +} + +do_install () { + oe_runmake 'DESTDIR=${D}' install + + # Move libgcc_s into /lib + mkdir -p ${D}/${base_libdir} + if [ "${BUILD_SYS}" == "${TARGET_SYS}" ]; then + # native builds drop one pathname component + mv -f ${D}/${prefix}/lib/libgcc_s.so.* ${D}/${base_libdir} + else + mv -f ${D}/${prefix}/*/lib/libgcc_s.so.* ${D}/${base_libdir} + fi + + # Move libstdc++ and libg2c into libdir (resetting our prefix to /usr + TGT_LIBDIR=`echo ${libdir} | sed -e 's,${CROSS_DIR},/usr,'` + mkdir -p ${D}/${TGT_LIBDIR} + mv -f ${D}/${prefix}/*/lib/libstdc++.so.* ${D}/${TGT_LIBDIR} + mv -f ${D}/${prefix}/*/lib/libg2c.so.* ${D}/${TGT_LIBDIR} + + # Manually run the target stripper since we won't get it run by + # the packaging. + ${TARGET_PREFIX}strip ${D}/${TGT_LIBDIR}/libstdc++.so.* + ${TARGET_PREFIX}strip ${D}/${TGT_LIBDIR}/libg2c.so.* + ${TARGET_PREFIX}strip ${D}/${base_libdir}/libgcc_s.so.* +} diff --git a/packages/gcc/gcc-cross_3.3.4.bb b/packages/gcc/gcc-cross_3.3.4.bb index e69de29bb2..3abf6f0103 100644 --- a/packages/gcc/gcc-cross_3.3.4.bb +++ b/packages/gcc/gcc-cross_3.3.4.bb @@ -0,0 +1,100 @@ +SECTION = "devel" +include gcc_${PV}.bb +inherit cross +FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}" + +DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc" +PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++" + +# Files for these are defined in the main gcc.oe +PACKAGES = "libgcc libstdc++ libg2c" +OLD_INHIBIT_PACKAGE_STRIP := "${INHIBIT_PACKAGE_STRIP}" +INHIBIT_PACKAGE_STRIP = 1 + +EXTRA_OECONF_PATHS = "--with-local-prefix=${CROSS_DIR}/${TARGET_SYS} \ + --with-gxx-include-dir=${CROSS_DIR}/${TARGET_SYS}/include/c++" + +export CPPFLAGS = "" +export CXXFLAGS = "" +export CFLAGS = "" +export LDFLAGS = "" + +do_configure () { + export CC="${BUILD_CC}" + export AR="${TARGET_SYS}-ar" + export RANLIB="${TARGET_SYS}-ranlib" + export LD="${TARGET_SYS}-ld" + export NM="${TARGET_SYS}-nm" + rm -f ${CROSS_DIR}/lib/gcc-lib/${TARGET_SYS}/${PV}/libgcc_eh.a + (cd ${S} && gnu-configize) || die "failure running gnu-configize" + oe_runconf +} + +do_compile_prepend () { + export CC="${BUILD_CC}" + export AR_FOR_TARGET="${TARGET_SYS}-ar" + export RANLIB_FOR_TARGET="${TARGET_SYS}-ranlib" + export LD_FOR_TARGET="${TARGET_SYS}-ld" + export NM_FOR_TARGET="${TARGET_SYS}-nm" + export CC_FOR_TARGET="${CCACHE} ${TARGET_SYS}-gcc" +} + +do_stage_append () { + for d in info man share/doc share/locale ; do + rm -rf ${CROSS_DIR}/$d + done + + # These aren't useful on the cross toolchain + rm -f ${CROSS_DIR}/bin/*gcov + rm -f ${CROSS_DIR}/bin/*gccbug + + # Fix a few include links so cross builds are happier + if [ ! -e ${STAGING_INCDIR}/c++ ]; then + mkdir -p ${STAGING_INCDIR} + rm -f ${STAGING_INCDIR}/c++ + ln -sf ${CROSS_DIR}/${TARGET_SYS}/include/c++ \ + ${STAGING_INCDIR}/ + fi + + # We use libiberty from binutils + rm -f ${CROSS_DIR}/lib/libiberty.a + + # We probably don't need these + rmdir ${CROSS_DIR}/include || : + + # We don't really need to keep this around + rm -rf ${CROSS_DIR}/share +} + +python do_package() { + if bb.data.getVar('DEBIAN_NAMES', d, 1): + bb.data.setVar('PKG_libgcc', 'libgcc1', d) + bb.build.exec_func('package_do_package', d) +} + +do_install () { + oe_runmake 'DESTDIR=${D}' install + + # Move libgcc_s into /lib + mkdir -p ${D}/${base_libdir} + if [ "${BUILD_SYS}" == "${TARGET_SYS}" ]; then + # native builds drop one pathname component + mv -f ${D}/${prefix}/lib/libgcc_s.so.* ${D}/${base_libdir} + else + mv -f ${D}/${prefix}/*/lib/libgcc_s.so.* ${D}/${base_libdir} + fi + + # Move libstdc++ and libg2c into libdir (resetting our prefix to /usr + TGT_LIBDIR=`echo ${libdir} | sed -e 's,${CROSS_DIR},/usr,'` + mkdir -p ${D}/${TGT_LIBDIR} + mv -f ${D}/${prefix}/*/lib/libstdc++.so.* ${D}/${TGT_LIBDIR} + mv -f ${D}/${prefix}/*/lib/libg2c.so.* ${D}/${TGT_LIBDIR} + + # 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}/${TGT_LIBDIR}/libstdc++.so.* + ${TARGET_PREFIX}strip ${D}/${TGT_LIBDIR}/libg2c.so.* + ${TARGET_PREFIX}strip ${D}/${base_libdir}/libgcc_s.so.* + fi +} diff --git a/packages/gcc/gcc-package.inc b/packages/gcc/gcc-package.inc index e69de29bb2..205c40587b 100644 --- a/packages/gcc/gcc-package.inc +++ b/packages/gcc/gcc-package.inc @@ -0,0 +1,110 @@ +gcclibdir ?= "${libdir}/gcc" + +# libgcc libstdc++ libg2c are listed in our FILES_*, but are actually +# packaged in the respective cross packages. +PACKAGES = "${PN} ${PN}-symlinks \ + ${PN}-c++ ${PN}-c++-symlinks \ + ${PN}-f77 ${PN}-f77-symlinks \ + libstdc++-dev libg2c-dev \ + ${PN}-doc" + +FILES_${PN} = "${bindir}/${TARGET_PREFIX}gcc \ + ${bindir}/${TARGET_PREFIX}cpp \ + ${bindir}/${TARGET_PREFIX}gcov \ + ${bindir}/${TARGET_PREFIX}gccbug \ + ${libexecdir}/gcc/${TARGET_SYS}/${PV}/cc1 \ + ${libexecdir}/gcc/${TARGET_SYS}/${PV}/collect2 \ + ${gcclibdir}/${TARGET_SYS}/${PV}/*.o \ + ${gcclibdir}/${TARGET_SYS}/${PV}/specs \ + ${gcclibdir}/${TARGET_SYS}/${PV}/lib* \ + ${gcclibdir}/${TARGET_SYS}/${PV}/include" +FILES_${PN}-symlinks = "${bindir}/cc \ + ${bindir}/gcc \ + ${bindir}/cpp \ + ${bindir}/gcov \ + ${bindir}/gccbug" + +FILES_${PN}-f77 = "${bindir}/${TARGET_PREFIX}g77 \ + ${libexecdir}/gcc/${TARGET_SYS}/${PV}/f771" +FILES_${PN}-f77-symlinks = "${bindir}/g77 \ + ${bindir}/f77" + +PACKAGE_ARCH_libg2c = "${TARGET_ARCH}" +PACKAGE_ARCH_libg2c-dev = "${TARGET_ARCH}" +# Called from within gcc-cross, so libdir is set wrong +FILES_libg2c = "${libdir}/libg2c.so.*" +FILES_libg2c-dev = "${libdir}/libg2c.so \ + ${libdir}/libg2c.a \ + ${libdir}/libfrtbegin.a" + +FILES_${PN}-c++ = "${bindir}/${TARGET_PREFIX}g++ \ + ${libexecdir}/gcc/${TARGET_SYS}/${PV}/cc1plus" +FILES_${PN}-c++-symlinks = "${bindir}/c++ \ + ${bindir}/g++" + +PACKAGE_ARCH_libgcc = "${TARGET_ARCH}" +FILES_libgcc = "/lib/libgcc_s.so.1" + +PACKAGE_ARCH_libstdc++ = "${TARGET_ARCH}" +PACKAGE_ARCH_libstdc++-dev = "${TARGET_ARCH}" +# Called from within gcc-cross, so libdir is set wrong +FILES_libstdc++ = "${libdir}/libstdc++.so.*" +FILES_libstdc++-dev = "${includedir}/c++/${PV} \ + ${libdir}/libstdc++.so \ + ${libdir}/libstdc++.la \ + ${libdir}/libstdc++.a \ + ${libdir}/libsupc++.la \ + ${libdir}/libsupc++.a" + +FILES_${PN}-doc = "${infodir} \ + ${mandir} \ + ${gcclibdir}/${TARGET_SYS}/${PV}/include/README" + + +do_install () { + autotools_do_install + + # Cleanup some of the ${libdir}{,exec}/gcc stuff ... + rm -r ${D}/${libdir}/gcc/${TARGET_SYS}/${PV}/install-tools + rm -r ${D}/${libexecdir}/gcc/${TARGET_SYS}/${PV}/install-tools + + # Hack around specs file assumptions + sed -i -e '/^*cross_compile:$/ { n; s/1/0/; }' ${D}/${libdir}/gcc/${TARGET_SYS}/${PV}/specs + + # Move libgcc_s into /lib + mkdir -p ${D}/${base_libdir} + mv ${D}/${libdir}/libgcc_s.so.* ${D}/${base_libdir} + rm ${D}/${libdir}/libgcc_s.so + ln -sf `echo ${libdir}/gcc/${TARGET_SYS}/${PV} \ + | tr -s / \ + | sed -e 's,^/,,' -e 's,[^/]*,..,g'`/lib/libgcc_s.so.1 \ + ${D}/${libdir}/gcc/${TARGET_SYS}/${PV}/libgcc_s.so + + # We don't need libtool libraries + rm ${D}/${libdir}/libg2c.la + + # Cleanup manpages.. + rm -r ${D}/${mandir}/man7 + + # We use libiberty from binutils + rm ${D}/${libdir}/libiberty.a + + cd ${D}/${bindir} + + # We care about g++ not c++ + rm *c++ + + # We don't care about the gcc-<version> ones for this + rm *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 + ln -sf ${TARGET_SYS}-g++ g++ + ln -sf ${TARGET_SYS}-gcc gcc + ln -sf g77 f77 + ln -sf g++ c++ + ln -sf gcc cc +} diff --git a/packages/gcc/gcc3-cross-build.inc b/packages/gcc/gcc3-cross-build.inc index e69de29bb2..611b021b11 100644 --- a/packages/gcc/gcc3-cross-build.inc +++ b/packages/gcc/gcc3-cross-build.inc @@ -0,0 +1,79 @@ +OLD_INHIBIT_PACKAGE_STRIP := "${INHIBIT_PACKAGE_STRIP}" +INHIBIT_PACKAGE_STRIP = "1" + +EXTRA_OECONF_PATHS = "--with-local-prefix=${CROSS_DIR}/${TARGET_SYS} \ + --with-gxx-include-dir=${CROSS_DIR}/${TARGET_SYS}/include/c++" + +do_configure_prepend () { + rm -f ${CROSS_DIR}/lib/gcc/${TARGET_SYS}/${PV}/libgcc_eh.a +} + +do_compile_prepend () { + export CC="${BUILD_CC}" + export AR_FOR_TARGET="${TARGET_SYS}-ar" + export RANLIB_FOR_TARGET="${TARGET_SYS}-ranlib" + export LD_FOR_TARGET="${TARGET_SYS}-ld" + export NM_FOR_TARGET="${TARGET_SYS}-nm" + export CC_FOR_TARGET="${CCACHE} ${TARGET_SYS}-gcc" +} + +do_stage_append () { + for d in info man share/doc share/locale ; do + rm -rf ${CROSS_DIR}/$d + done + + # These aren't useful on the cross toolchain + rm -f ${CROSS_DIR}/bin/*gcov + rm -f ${CROSS_DIR}/bin/*gccbug + + # Fix a few include links so cross builds are happier + if [ ! -e ${STAGING_INCDIR}/c++ ]; then + mkdir -p ${STAGING_INCDIR} + ln -sf ${CROSS_DIR}/${TARGET_SYS}/include/c++ \ + ${STAGING_INCDIR}/ + fi + + # We use libiberty from binutils + rm -f ${CROSS_DIR}/lib/libiberty.a + + # We probably don't need these + rmdir ${CROSS_DIR}/include || : + + # We don't really need to keep this around + rm -rf ${CROSS_DIR}/share +} + +python do_package() { + if bb.data.getVar('DEBIAN_NAMES', d, 1): + bb.data.setVar('PKG_libgcc', 'libgcc1', d) + bb.build.exec_func('package_do_package', d) +} + +do_install () { + oe_runmake 'DESTDIR=${D}' install + + # Move libgcc_s into /lib + mkdir -p ${D}/${base_libdir} + if [ -f ${D}/${base_libdir}/libgcc_s.so.? ]; then + # Already in the right location + : + elif [ -f ${D}/${prefix}/lib/libgcc_s.so.? ]; then + mv -f ${D}/${prefix}/lib/libgcc_s.so.* ${D}/${base_libdir} + else + mv -f ${D}/${prefix}/*/lib/libgcc_s.so.* ${D}/${base_libdir} + fi + + # Move libstdc++ and libg2c into libdir (resetting our prefix to /usr + TGT_LIBDIR=`echo ${libdir} | sed -e 's,${CROSS_DIR},/usr,'` + mkdir -p ${D}/${TGT_LIBDIR} + mv -f ${D}/${prefix}/*/lib/libstdc++.so.* ${D}/${TGT_LIBDIR} + mv -f ${D}/${prefix}/*/lib/libg2c.so.* ${D}/${TGT_LIBDIR} + + # 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}/${TGT_LIBDIR}/libstdc++.so.* + ${TARGET_PREFIX}strip ${D}/${TGT_LIBDIR}/libg2c.so.* + ${TARGET_PREFIX}strip ${D}/${base_libdir}/libgcc_s.so.* + fi +} diff --git a/packages/gcc/gcc_3.3.3.bb b/packages/gcc/gcc_3.3.3.bb index de6574d119..f69dedf29b 100644 --- a/packages/gcc/gcc_3.3.3.bb +++ b/packages/gcc/gcc_3.3.3.bb @@ -45,7 +45,7 @@ PACKAGE_ARCH_libstdc++ = "${TARGET_ARCH}" PACKAGE_ARCH_libstdc++-dev = "${TARGET_ARCH}" # Called from within gcc-cross, so libdir is set wrong #FILES_libstdc++ = "${libdir}/libstdc++.so.*" -FILES_libstdc++ = "/usr/lib/libstdc++.so.*" +FILES_libstdc++ = "${libdir}/libstdc++.so.*" FILES_libstdc++-dev = "${includedir}/c++/${PV} \ ${libdir}/libstdc++.so \ @@ -160,8 +160,8 @@ do_install () { rm -rf ${D}/${libdir}/gcc-lib/${TARGET_SYS}/${PV}/install-tools # Move libgcc_s into /lib - mkdir -p ${D}/lib - mv -f ${D}/${libdir}/libgcc_s.so.* ${D}/lib + mkdir -p ${D}/${base_libdir} + mv -f ${D}/${libdir}/libgcc_s.so.* ${D}/${base_libdir} rm -f ${D}/${libdir}/libgcc_s.so ln -sf `echo ${libdir}/gcc-lib/${TARGET_SYS}/${PV} | tr -s / | sed -e 's,^/,,' -e 's,[^/]*,..,g'`/lib/libgcc_s.so.? \ diff --git a/packages/gcc/gcc_3.3.4.bb b/packages/gcc/gcc_3.3.4.bb index 4258d58476..c93bda0e7a 100644 --- a/packages/gcc/gcc_3.3.4.bb +++ b/packages/gcc/gcc_3.3.4.bb @@ -45,7 +45,7 @@ PACKAGE_ARCH_libstdc++ = "${TARGET_ARCH}" PACKAGE_ARCH_libstdc++-dev = "${TARGET_ARCH}" # Called from within gcc-cross, so libdir is set wrong #FILES_libstdc++ = "${libdir}/libstdc++.so.*" -FILES_libstdc++ = "/usr/lib/libstdc++.so.*" +FILES_libstdc++ = "${libdir}/libstdc++.so.*" FILES_libstdc++-dev = "${includedir}/c++/${PV} \ ${libdir}/libstdc++.so \ @@ -138,8 +138,8 @@ do_install () { rm -rf ${D}/${libdir}/gcc-lib/${TARGET_SYS}/${PV}/install-tools # Move libgcc_s into /lib - mkdir -p ${D}/lib - mv -f ${D}/${libdir}/libgcc_s.so.* ${D}/lib + mkdir -p ${D}/${base_libdir} + mv -f ${D}/${libdir}/libgcc_s.so.* ${D}/${base_libdir} rm -f ${D}/${libdir}/libgcc_s.so ln -sf `echo ${libdir}/gcc-lib/${TARGET_SYS}/${PV} | tr -s / | sed -e 's,^/,,' -e 's,[^/]*,..,g'`/lib/libgcc_s.so.? \ |