--- /dev/null
+require gcc-configure-common.inc
+
+EXTRA_OECONF_PATHS = " \
+ --with-local-prefix=${STAGING_DIR_TARGET}${prefix} \
+ --with-gxx-include-dir=${includedir}/c++/${BINV}/"
EXTRA_OECONF_PATHS = " \
--with-local-prefix=${STAGING_DIR_TARGET}${prefix} \
--with-gxx-include-dir=${includedir}/c++/${BINV}/"
-
--with-sysroot=${STAGING_DIR_TARGET} \
--with-build-sysroot=${STAGING_DIR_TARGET} \
${@get_gcc_fpu_setting(bb, d)}"
+
+do_compile () {
+ oe_runmake
+}
--with-build-sysroot=${STAGING_DIR_TARGET} \
${@get_gcc_fpu_setting(bb, d)}"
+do_compile () {
+ oe_runmake
+}
+
do_install () {
oe_runmake 'DESTDIR=${D}' install
}
-PR = "r7"
+PR = "r10"
require gcc-${PV}.inc
require gcc-cross4.inc
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
+}
-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
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
}
--- /dev/null
+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
+}
-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...
"
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
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
}
g77 g77-symlinks \
gfortran gfortran-symlinks \
gcov gcov-symlinks \
- libmudflap libmudflap-dev \
- libgcc-dev \
- libstdc++-dev \
- libg2c-dev \
- libgfortran-dev \
${PN}-doc \
"
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 \
${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} \
"
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
# 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++
# 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
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
}
--- /dev/null
+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"