]> code.ossystems Code Review - openembedded-core.git/commitdiff
gcc-runtime: Add initial recipe
authorRichard Purdie <rpurdie@linux.intel.com>
Mon, 29 Mar 2010 21:27:13 +0000 (22:27 +0100)
committerRichard Purdie <rpurdie@linux.intel.com>
Mon, 29 Mar 2010 21:27:13 +0000 (22:27 +0100)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
meta/packages/gcc/gcc-configure-runtime.inc [new file with mode: 0644]
meta/packages/gcc/gcc-configure-target.inc
meta/packages/gcc/gcc-cross-initial.inc
meta/packages/gcc/gcc-cross-intermediate.inc
meta/packages/gcc/gcc-cross_4.3.3.bb
meta/packages/gcc/gcc-package-cross.inc
meta/packages/gcc/gcc-package-runtime.inc [new file with mode: 0644]
meta/packages/gcc/gcc-package-sdk.inc
meta/packages/gcc/gcc-package-target.inc
meta/packages/gcc/gcc-runtime_4.3.3.bb [new file with mode: 0644]

diff --git a/meta/packages/gcc/gcc-configure-runtime.inc b/meta/packages/gcc/gcc-configure-runtime.inc
new file mode 100644 (file)
index 0000000..2fd3114
--- /dev/null
@@ -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}/"
index 44d6136240e03618155cccc81fb4e84c6bcd50e2..2fd31149114e88fb0b897b7ebeacdf42ebdf19ab 100644 (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}/"
-
index 4bd21232e108aac3a13a05679b3c671bbcd9af9c..a3545417ce1668ffa113e6fedc13c4b43f00f8b4 100644 (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
+}
index e298307b67aecdcd1bf8048ea0debba6a024fcc9..169419f247df122e118477633ba84e14766d3c8b 100644 (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
 }
index 22efffa53930e3e98c5c5a01e6370322c358f22b..6122d4c423df75134758c371165fbf3ef6e3a60c 100644 (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
+}
index cb23b23f22823beeec7252e9741da65578febd99..6c56504828812da6de796c3f47ddc9c9f6de1958 100644 (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
 }
diff --git a/meta/packages/gcc/gcc-package-runtime.inc b/meta/packages/gcc/gcc-package-runtime.inc
new file mode 100644 (file)
index 0000000..646e58c
--- /dev/null
@@ -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
+}
index 0e66772d10352f76172433cfb58973b1c5d89357..cdce1da1c7d3fcb9020d7c855c3dc1de471daa6a 100644 (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
 }
 
index c1200b8bc7a6b3cde91108ed572cfdb1ccddf38e..f668211e71e5e2e0769ffcab0d6ad96163ad2683 100644 (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
 }
diff --git a/meta/packages/gcc/gcc-runtime_4.3.3.bb b/meta/packages/gcc/gcc-runtime_4.3.3.bb
new file mode 100644 (file)
index 0000000..080841c
--- /dev/null
@@ -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"