summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/canadian-cross.bbclass76
-rw-r--r--classes/canadian-native.bbclass88
-rw-r--r--classes/canadian-sdk.bbclass99
-rw-r--r--classes/canadian.bbclass24
-rw-r--r--classes/sdk.bbclass2
-rw-r--r--conf/bitbake.conf2
-rw-r--r--conf/checksums.ini44
-rw-r--r--packages/binutils/binutils-canadian-cross.inc25
-rw-r--r--packages/binutils/binutils-canadian-sdk_2.18.bb29
-rw-r--r--packages/binutils/mingw-binutils_2.17.50-20060824-1.bb12
-rw-r--r--packages/gcc/files/canadian-build-modules-configure.patch22
-rw-r--r--packages/gcc/files/pr22133-mingw-path-fixup.patch29
-rw-r--r--packages/gcc/files/pr33281-mingw-host-fragment.patch38
-rw-r--r--packages/gcc/files/pr35916-mingw-__USE_MINGW_ACCESS-everywhere.patch13
-rw-r--r--packages/gcc/gcc-canadian-cross-initial.inc4
-rw-r--r--packages/gcc/gcc-canadian-sdk_4.2.4.bb31
-rw-r--r--packages/gcc/gcc-configure-canadian-sdk.inc83
-rw-r--r--packages/gcc/gcc-package-canadian-sdk.inc39
-rw-r--r--packages/gcc/mingw-gcc-3.4.5-20060117-2/includedir.patch12
-rw-r--r--packages/gcc/mingw-gcc-build.inc43
-rw-r--r--packages/gcc/mingw-gcc-canadian-cross-initial_3.4.5-20060117-2.bb7
-rw-r--r--packages/gcc/mingw-gcc-canadian-cross_3.4.5-20060117-2.bb26
-rw-r--r--packages/gdb/gdb-6.8/gdb-6.8-mingw-3.patch425
-rw-r--r--packages/gdb/gdb-6.8/gdb-6.8-mips-mingw-sim-fixup.patch17
-rw-r--r--packages/gdb/gdb-6.8/gdb-6.8-pr9638-ppc-canadian-configh.patch179
-rw-r--r--packages/gdb/gdb-canadian-cross.inc18
-rw-r--r--packages/gdb/gdb-canadian-sdk_6.8.bb12
-rw-r--r--packages/gmp/gmp-canadian_4.2.4.bb24
-rw-r--r--packages/meta/external-toolchain.bb2
-rw-r--r--packages/meta/meta-toolchain.bb4
-rw-r--r--packages/mingw/mingw-runtime-headers.inc19
-rw-r--r--packages/mingw/mingw-runtime-headers_3.15.1.bb3
-rw-r--r--packages/mingw/mingw-runtime.inc17
-rw-r--r--packages/mingw/mingw-runtime_3.15.1.bb7
-rw-r--r--packages/mingw/mingw-w32api-headers.inc19
-rw-r--r--packages/mingw/mingw-w32api-headers_3.13.bb3
-rw-r--r--packages/mingw/mingw-w32api.inc13
-rw-r--r--packages/mingw/mingw-w32api_3.13.bb7
-rw-r--r--packages/mpfr/mpfr-canadian_2.3.1.bb3
-rw-r--r--packages/tasks/task-sdk-canadian-host.bb18
40 files changed, 1533 insertions, 5 deletions
diff --git a/classes/canadian-cross.bbclass b/classes/canadian-cross.bbclass
new file mode 100644
index 0000000000..474fb1d2ba
--- /dev/null
+++ b/classes/canadian-cross.bbclass
@@ -0,0 +1,76 @@
+# Canadian cross packages are built indirectly via dependency,
+# no need for them to be a direct target of 'world'
+EXCLUDE_FROM_WORLD = "1"
+
+inherit canadian
+
+PACKAGES = ""
+
+BASE_PACKAGE_ARCH = "${SDK_ARCH}"
+BASEPKG_HOST_SYS = "${SDK_ARCH}${SDK_VENDOR}-${SDK_OS}"
+BASEPKG_TARGET_SYS = "${SDK_ARCH}${SDK_VENDOR}-${SDK_OS}"
+
+HOST_ARCH = "${BUILD_ARCH}"
+HOST_VENDOR = "${BUILD_VENDOR}"
+HOST_OS = "${BUILD_OS}"
+HOST_PREFIX = "${BUILD_PREFIX}"
+HOST_CC_ARCH = "${BUILD_CC_ARCH}"
+HOST_EXEEXT = "${BUILD_EXEEXT}"
+
+TARGET_ARCH = "${SDK_ARCH}"
+TARGET_VENDOR = "${SDK_VENDOR}"
+TARGET_OS = "${SDK_OS}"
+TARGET_PREFIX = "${SDK_PREFIX}"
+TARGET_CC_ARCH = "${SDK_CC_ARCH}"
+TARGET_EXEEXT = "${SDK_EXEEXT}"
+
+CPPFLAGS = "${BUILD_CPPFLAGS}"
+CFLAGS = "${BUILD_CFLAGS}"
+CXXFLAGS = "${BUILD_CFLAGS}"
+LDFLAGS = "${BUILD_LDFLAGS}"
+
+TOOLCHAIN_OPTIONS = ""
+
+# Architecture dependent paths
+bindir = "${exec_prefix}/bin"
+sbindir = "${exec_prefix}/bin"
+libexecdir = "${exec_prefix}/libexec"
+libdir = "${exec_prefix}/lib"
+includedir = "${exec_prefix}/include"
+oldincludedir = "${exec_prefix}/include"
+
+# Path prefixes
+export base_prefix = "${STAGING_DIR_HOST}"
+export prefix = "${STAGING_DIR_HOST}${layout_prefix}"
+export exec_prefix = "${STAGING_DIR_HOST}${layout_exec_prefix}"
+
+# Base paths
+export base_bindir = "${STAGING_DIR_HOST}${layout_base_bindir}"
+export base_sbindir = "${STAGING_DIR_HOST}${layout_base_sbindir}"
+export base_libdir = "${STAGING_DIR_HOST}${layout_base_libdir}"
+
+# Architecture independent paths
+export datadir = "${STAGING_DIR_HOST}${layout_datadir}"
+export sysconfdir = "${STAGING_DIR_HOST}${layout_sysconfdir}"
+export sharedstatedir = "${STAGING_DIR_HOST}${layout_sharedstatedir}"
+export localstatedir = "${STAGING_DIR_HOST}${layout_localstatedir}"
+export infodir = "${STAGING_DIR_HOST}${layout_infodir}"
+export mandir = "${STAGING_DIR_HOST}${layout_mandir}"
+export docdir = "${STAGING_DIR_HOST}${layout_docdir}"
+export servicedir = "${STAGING_DIR_HOST}${layout_servicedir}"
+
+# Architecture dependent paths
+export bindir = "${STAGING_DIR_HOST}${layout_bindir}"
+export sbindir = "${STAGING_DIR_HOST}${layout_sbindir}"
+export libexecdir = "${STAGING_DIR_HOST}${layout_libexecdir}"
+export libdir = "${STAGING_DIR_HOST}${layout_libdir}"
+export includedir = "${STAGING_DIR_HOST}${layout_includedir}"
+export oldincludedir = "${STAGING_DIR_HOST}${layout_includedir}"
+
+do_stage () {
+ oe_runmake install
+}
+
+do_install () {
+ :
+}
diff --git a/classes/canadian-native.bbclass b/classes/canadian-native.bbclass
new file mode 100644
index 0000000000..d572ab5990
--- /dev/null
+++ b/classes/canadian-native.bbclass
@@ -0,0 +1,88 @@
+inherit base
+
+# Canadian native packages are built indirectly via dependency,
+# no need for them to be a direct target of 'world'
+EXCLUDE_FROM_WORLD = "1"
+
+inherit canadian
+
+PACKAGES = ""
+
+BASE_PACKAGE_ARCH = "${SDK_ARCH}"
+BASEPKG_HOST_SYS = "${SDK_ARCH}${SDK_VENDOR}-${SDK_OS}"
+BASEPKG_TARGET_SYS = "${SDK_ARCH}${SDK_VENDOR}-${SDK_OS}"
+
+HOST_ARCH = "${SDK_ARCH}"
+HOST_VENDOR = "${SDK_VENDOR}"
+HOST_OS = "${SDK_OS}"
+HOST_PREFIX = "${SDK_PREFIX}"
+HOST_CC_ARCH = "${SDK_CC_ARCH}"
+HOST_EXEEXT = "${SDK_EXEEXT}"
+
+TARGET_ARCH = "${SDK_ARCH}"
+TARGET_VENDOR = "${SDK_VENDOR}"
+TARGET_OS = "${SDK_OS}"
+TARGET_PREFIX = "${SDK_PREFIX}"
+TARGET_CC_ARCH = "${SDK_CC_ARCH}"
+TARGET_EXEEXT = "${SDK_EXEEXT}"
+
+CPPFLAGS = "${SDK_CPPFLAGS}"
+CFLAGS = "${SDK_CFLAGS}"
+CXXFLAGS = "${SDK_CFLAGS}"
+LDFLAGS = "${SDK_LDFLAGS}"
+
+# set the compiler as well. It could have been set to something else
+export CC = "${CCACHE}${SDK_PREFIX}gcc ${HOST_CC_ARCH}"
+export CXX = "${CCACHE}${SDK_PREFIX}g++ ${HOST_CC_ARCH}"
+export F77 = "${CCACHE}${SDK_PREFIX}g77 ${HOST_CC_ARCH}"
+export CPP = "${SDK_PREFIX}gcc -E"
+export LD = "${SDK_PREFIX}ld"
+#export CCLD = "${CC}"
+export AR = "${SDK_PREFIX}ar"
+export AS = "${SDK_PREFIX}as"
+export RANLIB = "${SDK_PREFIX}ranlib"
+export STRIP = "${SDK_PREFIX}strip"
+
+# Path prefixes
+export base_prefix = "${STAGING_DIR_HOST}"
+export prefix = "${STAGING_DIR_HOST}${layout_prefix}"
+export exec_prefix = "${STAGING_DIR_HOST}${layout_exec_prefix}"
+
+# Base paths
+export base_bindir = "${STAGING_DIR_HOST}${layout_base_bindir}"
+export base_sbindir = "${STAGING_DIR_HOST}${layout_base_sbindir}"
+export base_libdir = "${STAGING_DIR_HOST}${layout_base_libdir}"
+
+# Architecture independent paths
+export datadir = "${STAGING_DIR_HOST}${layout_datadir}"
+export sysconfdir = "${STAGING_DIR_HOST}${layout_sysconfdir}"
+export sharedstatedir = "${STAGING_DIR_HOST}${layout_sharedstatedir}"
+export localstatedir = "${STAGING_DIR_HOST}${layout_localstatedir}"
+export infodir = "${STAGING_DIR_HOST}${layout_infodir}"
+export mandir = "${STAGING_DIR_HOST}${layout_mandir}"
+export docdir = "${STAGING_DIR_HOST}${layout_docdir}"
+export servicedir = "${STAGING_DIR_HOST}${layout_servicedir}"
+
+# Architecture dependent paths
+export bindir = "${STAGING_DIR_HOST}${layout_bindir}"
+export sbindir = "${STAGING_DIR_HOST}${layout_sbindir}"
+export libexecdir = "${STAGING_DIR_HOST}${layout_libexecdir}"
+export libdir = "${STAGING_DIR_HOST}${layout_libdir}"
+export includedir = "${STAGING_DIR_HOST}${layout_includedir}"
+export oldincludedir = "${STAGING_DIR_HOST}${layout_includedir}"
+
+do_stage () {
+ if [ "${INHIBIT_NATIVE_STAGE_INSTALL}" != "1" ]
+ then
+ if [ "${AUTOTOOLS_NATIVE_STAGE_INSTALL}" != "1" ]
+ then
+ oe_runmake install
+ else
+ autotools_stage_all
+ fi
+ fi
+}
+
+do_install () {
+ :
+}
diff --git a/classes/canadian-sdk.bbclass b/classes/canadian-sdk.bbclass
new file mode 100644
index 0000000000..d73b62f485
--- /dev/null
+++ b/classes/canadian-sdk.bbclass
@@ -0,0 +1,99 @@
+# Canadian SDK packages are built either explicitly by the user,
+# or indirectly via dependency. No need to be in 'world'.
+EXCLUDE_FROM_WORLD = "1"
+
+inherit canadian
+
+PACKAGE_ARCH = "${SDK_SYS}-sdk-${OLD_PACKAGE_ARCH}"
+BASE_PACKAGE_ARCH = "${OLD_BASE_PACKAGE_ARCH}"
+
+HOST_ARCH = "${SDK_ARCH}"
+HOST_VENDOR = "${SDK_VENDOR}"
+HOST_OS = "${SDK_OS}"
+HOST_PREFIX = "${SDK_PREFIX}"
+HOST_CC_ARCH = "${SDK_CC_ARCH}"
+HOST_EXEEXT = "${SDK_EXEEXT}"
+
+CPPFLAGS = "${SDK_CPPFLAGS}"
+CFLAGS = "${SDK_CFLAGS}"
+CXXFLAGS = "${SDK_CFLAGS}"
+LDFLAGS = "${SDK_LDFLAGS}"
+
+# TODO: add logic to add the following unless PN ~= gcc*
+#DEPENDS_prepend = "virtual/${HOST_PREFIX}binutils virtual/${HOST_PREFIX}gcc "
+# and otherwise just
+DEPENDS_prepend = "virtual/${HOST_PREFIX}binutils "
+
+SDK_PATH_sdk-mingw32 = "/OpenEmbedded/${SDK_NAME}"
+SDK_REALPATH = "${SDK_PATH}"
+SDK_REALPATH_sdk-mingw32 = "C:/OpenEmbedded/${SDK_NAME}"
+
+# Path prefixes
+prefix = "${SDK_PATH}"
+exec_prefix = "${prefix}"
+base_prefix = "${prefix}"
+
+# Base paths
+export base_bindir = "${prefix}/bin"
+export base_sbindir = "${prefix}/bin"
+export base_libdir = "${prefix}/lib"
+
+# Architecture independent paths
+export datadir = "${prefix}/share"
+export sysconfdir = "${prefix}/etc"
+export sharedstatedir = "${datadir}/com"
+export localstatedir = "${prefix}/var"
+export infodir = "${datadir}/info"
+export mandir = "${datadir}/man"
+export docdir = "${datadir}/doc"
+export servicedir = "${prefix}/srv"
+
+# Architecture dependent paths
+export bindir = "${prefix}/bin"
+export sbindir = "${prefix}/bin"
+export libexecdir = "${prefix}/libexec"
+export libdir = "${prefix}/lib"
+export includedir = "${prefix}/include"
+export oldincludedir = "${prefix}/include"
+
+export dollar = "$"
+
+canadian_sdk_runconf() {
+ # modified oe_runconf()
+ # 1. Override prefix with SDK_REALPATH
+ # 2. Pass '${prefix}' to configure, to allow for prefix override
+ # 3. But don't do that for infodir and mandir, as they will
+ # break gcc makefiles for windows/dos SDK_REALPATH
+ if [ -x ${S}/configure ] ; then
+ cfgcmd="${S}/configure \
+ --build=${BUILD_SYS} \
+ --host=${HOST_SYS} \
+ --target=${TARGET_SYS} \
+ --prefix=${SDK_REALPATH} \
+ --exec-prefix=$dollar{prefix} \
+ --bindir=$dollar{prefix}/bin \
+ --sbindir=$dollar{prefix}/bin \
+ --libexecdir=$dollar{prefix}/libexec \
+ --datadir=$dollar{prefix}/share \
+ --sysconfdir=$dollar{prefix}/etc \
+ --sharedstatedir=$dollar{prefix}/com \
+ --localstatedir=$dollar{prefix}/var \
+ --libdir=$dollar{prefix}/lib \
+ --includedir=$dollar{prefix}/include \
+ --oldincludedir=$dollar{prefix}/include \
+ --infodir=${prefix}/share/info \
+ --mandir=${prefix}/share/man \
+ --enable-mainainer-mode \
+ ${EXTRA_OECONF} \
+ $@"
+ oenote "Running $cfgcmd..."
+ $cfgcmd || oefatal "oe_runconf failed"
+ else
+ oefatal "no configure script found"
+ fi
+}
+
+FILES_${PN} = "${prefix}"
+FILES_${PN}-dbg += "${prefix}/.debug \
+ ${prefix}/bin/.debug \
+ "
diff --git a/classes/canadian.bbclass b/classes/canadian.bbclass
new file mode 100644
index 0000000000..f359a8df7f
--- /dev/null
+++ b/classes/canadian.bbclass
@@ -0,0 +1,24 @@
+# For Canadian SDKs we need to know what these values start out as, and use
+# them as well as the updated ones.
+OLD_PACKAGE_ARCH := "${PACKAGE_ARCH}"
+OLD_MULTIMACH_ARCH := "${MULTIMACH_ARCH}"
+OLD_TARGET_VENDOR := "${TARGET_VENDOR}"
+OLD_TARGET_OS := "${TARGET_OS}"
+OLD_BASE_PACKAGE_ARCH := "${BASE_PACKAGE_ARCH}"
+
+OLD_MULTIMACH_TARGET_SYS = "${OLD_MULTIMACH_ARCH}${OLD_TARGET_VENDOR}-${OLD_TARGET_OS}"
+OLD_BASEPKG_TARGET_SYS = "${OLD_BASE_PACKAGE_ARCH}${OLD_TARGET_VENDOR}-${OLD_TARGET_OS}"
+
+# We want to allow for both machine-target_os-sdk_arch-sdk_os and for
+# sdk_arch-sdk_os
+MULTIMACH_SDK_SYS = "${OLD_MULTIMACH_TARGET_SYS}-${SDK_SYS}"
+BASEPKG_SDK_SYS = "${OLD_BASEPKG_TARGET_SYS}-${SDK_SYS}"
+STAGING_DIR_SDK = "${STAGING_DIR}/${MULTIMACH_SDK_SYS}"
+
+# Our host dir isn't the build system here, but the SDK system
+STAGING_DIR_HOST = "${STAGING_DIR}/${SDK_SYS}"
+
+# Overrides for paths
+STAGING_BINDIR_CROSS = "${STAGING_BINDIR}"
+
+PACKAGE_ARCH = "${SDK_ARCH}"
diff --git a/classes/sdk.bbclass b/classes/sdk.bbclass
index da6cab9cd5..eb34bd04b5 100644
--- a/classes/sdk.bbclass
+++ b/classes/sdk.bbclass
@@ -28,7 +28,7 @@ CXXFLAGS = "${BUILD_CFLAGS}"
LDFLAGS = "${BUILD_LDFLAGS}"
# Path prefixes
-prefix = "${SDK_PREFIX}"
+prefix = "${SDK_PATH}"
exec_prefix = "${prefix}"
base_prefix = "${prefix}"
diff --git a/conf/bitbake.conf b/conf/bitbake.conf
index 1164411963..effa67003d 100644
--- a/conf/bitbake.conf
+++ b/conf/bitbake.conf
@@ -285,7 +285,7 @@ DEPLOY_DIR_TOOLS = "${DEPLOY_DIR}/tools"
PKGDATA_DIR = "${TMPDIR}/pkgdata/${MULTIMACH_TARGET_SYS}"
SDK_NAME = "${DISTRO}/${TARGET_ARCH}"
-SDK_PREFIX = "/usr/local/${SDK_NAME}"
+SDK_PATH = "/usr/local/${SDK_NAME}"
##################################################################
# Kernel info.
diff --git a/conf/checksums.ini b/conf/checksums.ini
index d8355adbd3..d48903a818 100644
--- a/conf/checksums.ini
+++ b/conf/checksums.ini
@@ -2194,6 +2194,10 @@ sha256=5645c3371aac47cbbcc1354eab10ec32777837d7cb4ba47b94c9043612b12f36
md5=bcb9fabaf0eaf91bd38c4ee148658df8
sha256=5645c3371aac47cbbcc1354eab10ec32777837d7cb4ba47b94c9043612b12f36
+[http://downloads.sourceforge.net/mingw/binutils-2.17.50-20060824-1-src.tar.gz]
+md5=64905b00a89f4e7ba3b3991c89ba59a4
+sha256=1e041ad002aa2f7a06624afcb4a9832085c63abe0a9551cdbc40522aac18871a
+
[http://kernel.org/pub/linux/devel/binutils/binutils-2.17.50.0.1.tar.bz2]
md5=cfecfb29e260225fa192654f3763c2f8
sha256=9a56b06e4f533745e9b7cde5b170f905f74d130b899f48498cbd6d376c664b7a
@@ -6234,6 +6238,30 @@ sha256=bfbf487731ad5dca37efe480a837417de071bd67e685d5c1df6a290707575165
md5=cc3c5565fdb9ab87a05ddb106ba0bd1f
sha256=309f614a3c7fee88edc4928ff17185a19533949a1642ccf776e87d86303704de
+[http://downloads.sourceforge.net/mingw/gcc-ada-3.4.5-20060117-2-src.tar.gz]
+md5=30154205636c12c6abcc462ce07550cf
+sha256=404358fe19326679f602de6f7d6a2db180e27af83813150f58ab28eec197b646
+
+[http://downloads.sourceforge.net/mingw/gcc-core-3.4.5-20060117-2-src.tar.gz]
+md5=d0dc9d57d493889bc1ca88b127290b9d
+sha256=a21c2f48bb48d62935ee955ac8fa318658861f6316f30feb3cdec5337abf7f05
+
+[http://downloads.sourceforge.net/mingw/gcc-g++-3.4.5-20060117-2-src.tar.gz]
+md5=ca81c8420ab9d1d05ff9c73a9d4f7d63
+sha256=d54078fdccaa3776927b3931c15b880c43e76cb6a0fb59594d1b85cfc89356e9
+
+[http://downloads.sourceforge.net/mingw/gcc-g77-3.4.5-20060117-2-src.tar.gz]
+md5=57d489658743f0d9048e440b312740c8
+sha256=3ea32832e07571be317cdb1f9b9dc678a51ad2c2f066f91e155c449d0cf7d796
+
+[http://downloads.sourceforge.net/mingw/gcc-java-3.4.5-20060117-2-src.tar.gz]
+md5=96b039f4e11bff4d3d8a4e7da6e3998d
+sha256=ec7a963c0dfd986697350be26e53577b0a39c86970b4e9485d85ca99b0cb2197
+
+[http://downloads.sourceforge.net/mingw/gcc-objc-3.4.5-20060117-2-src.tar.gz]
+md5=2bffc1e314f2efb1034b3d3ea1ce2f7d
+sha256=a8a3c0f0a38f819b87ff9282f1e40536f5050153f0f60db5c869509a70497c2c
+
[http://xorg.freedesktop.org/releases/individual/util/gccmakedep-1.0.2.tar.gz]
md5=fc49f45251c1336fe1dad5dba1c83fcd
sha256=fdd3963294e80b27416f902a5c029c033d321f03310d3cafa3afb62b50ddce92
@@ -14622,6 +14650,14 @@ sha256=8ee3e48da07e20899a11adb9f2dd4dfc4922b43bcb1dc7bd78c55aceeb5eccc1
md5=048aa29c31f067382cd669ee20934b9e
sha256=4f65183200955540c097b82bfb18f5d21b636ca79f47cd018a4ea8b89cd2998c
+[http://downloads.sourceforge.net/mingw/mingw-runtime-3.14-src.tar.gz]
+md5=7d049a8331efcfe34600c0cda6934ac6
+sha256=a145a90d0824c65cfc11c3fc843ba484585983e1e8ee14b79f4d09cf1d38b98b
+
+[http://downloads.sourceforge.net/mingw/mingwrt-3.15.1-mingw32-src.tar.gz]
+md5=0411b98fd5eeac0706e2abb7122526bb
+sha256=4f4d19f3e15fdf00957932211be609b6bf4e689ad5938ce7bff666a638bde0e7
+
[http://www.denx.de/twiki/pub/Know/MiniFOHome/mini_fo-0-6-1-pre1.tar.bz2]
md5=7e192e01b08023c7f3e63bf1c796bc14
sha256=68c64a38f0b29347f86871248f0399e7e1b12645dc6263af7b2e4940f1392eaa
@@ -21406,6 +21442,14 @@ sha256=d6863b3ad5ecb465d217714ad474f2a9fb6e7890b4565184e8d5962d46850a31
md5=a17be90788c4ccd6ee8253659b9321f8
sha256=56dfd5365848095793faa31ee1cf753c10891dd076944d3533b05c6547965134
+[http://downloads.sourceforge.net/mingw/w32api-3.11-src.tar.gz]
+md5=bc37e4e6973f603c317a40602f7f35d9
+sha256=852fee2c0aa5cd9ff529c1ba1d28668796c7c3dc959376f6a207a0b178ac5225
+
+[http://downloads.sourceforge.net/mingw/w32api-3.13-mingw32-src.tar.gz]
+md5=8eae788a09a589414b83adc91bb0c069
+sha256=02cec615f8cfc94786ea9c1f41645cf43cc2414ca36b92fdd041304723bf2fc4
+
[http://mpx.freeshell.net/w3cam-0.7.2.tar.gz]
md5=eec0b301b32bc8e9f65a4e54248c9868
sha256=96d659d916fafe555311068c9bf8662b93f10d099b12b17ed04d8a8fffbc72e0
diff --git a/packages/binutils/binutils-canadian-cross.inc b/packages/binutils/binutils-canadian-cross.inc
new file mode 100644
index 0000000000..244c69ff8b
--- /dev/null
+++ b/packages/binutils/binutils-canadian-cross.inc
@@ -0,0 +1,25 @@
+SECTION = "devel"
+inherit canadian-cross
+DEPENDS += "flex-native bison-native"
+PROVIDES = "virtual/${TARGET_PREFIX}binutils"
+PACKAGES = ""
+EXTRA_OECONF = "--with-sysroot=${STAGING_DIR_HOST} \
+ --program-prefix=${TARGET_PREFIX} \
+ --enable-install-libbfd \
+ --disable-werror"
+
+do_stage () {
+ # ugly hack introduce to link our staging area up
+ mkdir -p ${exec_prefix}/${SDK_SYS}
+ ln -s ${STAGING_INCDIR} ${exec_prefix}/${SDK_SYS}/include
+ ln -s ${STAGING_LIBDIR} ${exec_prefix}/${SDK_SYS}/lib
+
+ oe_runmake install
+
+ # We don't really need these, so we'll remove them...
+ rm -rf ${exec_prefix}/${SDK_SYS}/lib/ldscripts
+}
+
+do_install () {
+ :
+}
diff --git a/packages/binutils/binutils-canadian-sdk_2.18.bb b/packages/binutils/binutils-canadian-sdk_2.18.bb
new file mode 100644
index 0000000000..cf27cd06f8
--- /dev/null
+++ b/packages/binutils/binutils-canadian-sdk_2.18.bb
@@ -0,0 +1,29 @@
+SECTION = "devel"
+require binutils_${PV}.bb
+inherit canadian-sdk
+
+DEPENDS="\
+ virtual/${HOST_PREFIX}binutils \
+ virtual/${HOST_PREFIX}gcc \
+ flex-native bison-native \
+"
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/binutils-${PV}"
+EXTRA_OECONF = "--with-sysroot=${prefix}/${TARGET_SYS} \
+ --program-prefix=${TARGET_PREFIX}"
+PR = "r3"
+
+FILES_${PN}-dbg += "${prefix}/${TARGET_SYS}/bin/.debug"
+
+do_stage() {
+ :
+}
+
+do_install () {
+ autotools_do_install
+
+ # Install the libiberty header
+ install -d ${D}${includedir}
+ install -m 644 ${S}/include/ansidecl.h ${D}${includedir}
+ install -m 644 ${S}/include/libiberty.h ${D}${includedir}
+}
diff --git a/packages/binutils/mingw-binutils_2.17.50-20060824-1.bb b/packages/binutils/mingw-binutils_2.17.50-20060824-1.bb
new file mode 100644
index 0000000000..9d17873270
--- /dev/null
+++ b/packages/binutils/mingw-binutils_2.17.50-20060824-1.bb
@@ -0,0 +1,12 @@
+PR = "r1"
+
+require binutils.inc
+
+DESCRIPTION = "A GNU collection of binary utilities - MinGW port"
+HOMEPAGE = "http://www.mingw.org/"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/mingw/binutils-${PV}-src.tar.gz"
+
+S = "${WORKDIR}/binutils-${PV}-src"
+
+DEFAULT_PREFERENCE = "0"
diff --git a/packages/gcc/files/canadian-build-modules-configure.patch b/packages/gcc/files/canadian-build-modules-configure.patch
new file mode 100644
index 0000000000..8aede105c5
--- /dev/null
+++ b/packages/gcc/files/canadian-build-modules-configure.patch
@@ -0,0 +1,22 @@
+diff -urN gcc-4.2.2-orig/gcc/configure gcc-4.2.2/gcc/configure
+--- gcc-4.2.2-orig/gcc/configure 2008-08-31 23:10:56.000000000 +0200
++++ gcc-4.2.2/gcc/configure 2008-08-31 23:03:02.000000000 +0200
+@@ -12716,6 +12716,7 @@
+ esac
+ saved_CFLAGS="${CFLAGS}"
+ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
++ CPP="${CPP_FOR_BUILD}" CPPFLAGS="${CPPFLAGS_FOR_BUILD}" \
+ CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \
+ --enable-languages=${enable_languages-all} \
+ --target=$target_alias --host=$build_alias --build=$build_alias
+diff -urN gcc-4.2.2-orig/gcc/configure.ac gcc-4.2.2/gcc/configure.ac
+--- gcc-4.2.2-orig/gcc/configure.ac 2008-08-31 23:10:53.000000000 +0200
++++ gcc-4.2.2/gcc/configure.ac 2008-08-31 23:03:29.000000000 +0200
+@@ -1490,6 +1490,7 @@
+ esac
+ saved_CFLAGS="${CFLAGS}"
+ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
++ CPP="${CPP_FOR_BUILD}" CPPFLAGS="${CPPFLAGS_FOR_BUILD}" \
+ ${realsrcdir}/configure \
+ --enable-languages=${enable_languages-all} \
+ --target=$target_alias --host=$build_alias --build=$build_alias
diff --git a/packages/gcc/files/pr22133-mingw-path-fixup.patch b/packages/gcc/files/pr22133-mingw-path-fixup.patch
new file mode 100644
index 0000000000..429e9ffd0c
--- /dev/null
+++ b/packages/gcc/files/pr22133-mingw-path-fixup.patch
@@ -0,0 +1,29 @@
+diff -rupN gcc-4.2.orig/gcc/c-incpath.c gcc-4.2/gcc/c-incpath.c
+--- gcc-4.2.orig/gcc/c-incpath.c 2007-09-01 11:28:30.000000000 -0400
++++ gcc-4.2/gcc/c-incpath.c 2008-08-17 16:56:01.000000000 -0400
+@@ -340,13 +340,18 @@ add_path (char *path, int chain, int cxx
+ cpp_dir *p;
+
+ #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+- /* Convert all backslashes to slashes. The native CRT stat()
+- function does not recognize a directory that ends in a backslash
+- (unless it is a drive root dir, such "c:\"). Forward slashes,
+- trailing or otherwise, cause no problems for stat(). */
+- char* c;
+- for (c = path; *c; c++)
+- if (*c == '\\') *c = '/';
++ /* Remove unnecessary trailing slashes. On some versions of MS
++ Windows, trailing _forward_ slashes cause no problems for stat().
++ On newer versions, stat() does not recognise a directory that ends
++ in a '\\' or '/', unless it is a drive root dir, such as "c:/",
++ where it is obligatory. */
++ int pathlen = strlen (path);
++ char* end = path + pathlen - 1;
++ /* Preserve the lead '/' or lead "c:/". */
++ char* start = path + (pathlen > 2 && path[1] == ':' ? 3 : 1);
++
++ for (; end > start && IS_DIR_SEPARATOR (*end); end--)
++ *end = 0;
+ #endif
+
+ p = XNEW (cpp_dir);
diff --git a/packages/gcc/files/pr33281-mingw-host-fragment.patch b/packages/gcc/files/pr33281-mingw-host-fragment.patch
new file mode 100644
index 0000000000..e16fb4464a
--- /dev/null
+++ b/packages/gcc/files/pr33281-mingw-host-fragment.patch
@@ -0,0 +1,38 @@
+---
+ config/mh-mingw | 3 +++
+ configure | 1 +
+ configure.in | 1 +
+ 3 files changed, 5 insertions(+)
+
+Index: gcc-4.2.3/config/mh-mingw
+===================================================================
+--- /dev/null
++++ gcc-4.2.3/config/mh-mingw
+@@ -0,0 +1,3 @@
++# Add -D__USE_MINGW_ACCESS to enable the built compiler to work on Windows
++# Vista (see PR33281 for details).
++BOOT_CFLAGS += -D__USE_MINGW_ACCESS
+Index: gcc-4.2.3/configure.in
+===================================================================
+--- gcc-4.2.3.orig/configure.in
++++ gcc-4.2.3/configure.in
+@@ -929,6 +929,7 @@ case "${host}" in
+ host_makefile_frag="config/mh-cygwin"
+ ;;
+ *-mingw32*)
++ host_makefile_frag="config/mh-mingw"
+ ;;
+ *-interix*)
+ host_makefile_frag="config/mh-interix"
+Index: gcc-4.2.3/configure
+===================================================================
+--- gcc-4.2.3.orig/configure
++++ gcc-4.2.3/configure
+@@ -1769,6 +1769,7 @@ case "${host}" in
+ host_makefile_frag="config/mh-cygwin"
+ ;;
+ *-mingw32*)
++ host_makefile_frag="config/mh-mingw"
+ ;;
+ *-interix*)
+ host_makefile_frag="config/mh-interix"
diff --git a/packages/gcc/files/pr35916-mingw-__USE_MINGW_ACCESS-everywhere.patch b/packages/gcc/files/pr35916-mingw-__USE_MINGW_ACCESS-everywhere.patch
new file mode 100644
index 0000000000..faf44c27f9
--- /dev/null
+++ b/packages/gcc/files/pr35916-mingw-__USE_MINGW_ACCESS-everywhere.patch
@@ -0,0 +1,13 @@
+---
+ config/mh-mingw | 1 +
+ 1 file changed, 1 insertion(+)
+
+Index: gcc-4.2.3/config/mh-mingw
+===================================================================
+--- gcc-4.2.3.orig/config/mh-mingw
++++ gcc-4.2.3/config/mh-mingw
+@@ -1,3 +1,4 @@
+ # Add -D__USE_MINGW_ACCESS to enable the built compiler to work on Windows
+ # Vista (see PR33281 for details).
+ BOOT_CFLAGS += -D__USE_MINGW_ACCESS
++CFLAGS += -D__USE_MINGW_ACCESS
diff --git a/packages/gcc/gcc-canadian-cross-initial.inc b/packages/gcc/gcc-canadian-cross-initial.inc
new file mode 100644
index 0000000000..99c7a476ef
--- /dev/null
+++ b/packages/gcc/gcc-canadian-cross-initial.inc
@@ -0,0 +1,4 @@
+require gcc-cross-initial.inc
+
+DEPENDS = "virtual/${TARGET_PREFIX}binutils"
+DEPENDS += "virtual/${TARGET_PREFIX}libc-initial"
diff --git a/packages/gcc/gcc-canadian-sdk_4.2.4.bb b/packages/gcc/gcc-canadian-sdk_4.2.4.bb
new file mode 100644
index 0000000000..03d9ae364a
--- /dev/null
+++ b/packages/gcc/gcc-canadian-sdk_4.2.4.bb
@@ -0,0 +1,31 @@
+inherit canadian-sdk
+
+PR = "r1"
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
+
+PACKAGES = "${PN}"
+
+require gcc-${PV}.inc
+
+# Correct gmp / mpfr
+DEPENDS = "gmp-canadian mpfr-canadian"
+
+require gcc-configure-canadian-sdk.inc
+require gcc-package-canadian-sdk.inc
+
+SRC_URI_append = "file://fortran-cross-compile-hack.patch;patch=1 \
+ file://pr22133-mingw-path-fixup.patch;patch=1 \
+ file://pr33281-mingw-host-fragment.patch;patch=1 \
+ file://pr35916-mingw-__USE_MINGW_ACCESS-everywhere.patch;patch=1"
+
+ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_INCDIR}"
+
+
+SRC_URI_append =+ "\
+ file://canadian-build-modules-configure.patch;patch=1 \
+"
+
+EXTRA_OECONF += "--disable-libunwind-exceptions --disable-libssp \
+ --disable-libgomp --disable-libmudflap \
+ --with-mpfr=${STAGING_LIBDIR}"
diff --git a/packages/gcc/gcc-configure-canadian-sdk.inc b/packages/gcc/gcc-configure-canadian-sdk.inc
new file mode 100644
index 0000000000..489cb46371
--- /dev/null
+++ b/packages/gcc/gcc-configure-canadian-sdk.inc
@@ -0,0 +1,83 @@
+require gcc-configure-common.inc
+
+USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibc", "no", "", d )}'
+USE_NLS = '${@base_conditional( "TARGET_OS", "linux-uclibcgnueabi", "no", "", d )}'
+
+ARCH_FLAGS_FOR_TARGET=""
+
+# Tools for build
+export CC_FOR_BUILD="${BUILD_CC}"
+export CFLAGS_FOR_BUILD="${BUILD_CFLAGS}"
+export CPP_FOR_BUILD="${BUILD_CPP}"
+export CPPFLAGS_FOR_BUILD="${BUILD_CPPFLAGS}"
+export CXX_FOR_BUILD="${BUILD_CXX}"
+export CXXFLAGS_FOR_BUILD="${BUILD_CXXFLAGS}"
+export LD_FOR_BUILD="${BUILD_LD}"
+export LDFLAGS_FOR_BUILD="${BUILD_LDFLAGS}"
+export AS_FOR_BUILD="${BUILD_PREFIX}as"
+export AR_FOR_BUILD="${BUILD_PREFIX}ar"
+export NM_FOR_BUILD="${BUILD_PREFIX}nm"
+export RANLIB_FOR_BUILD="${BUILD_PREFIX}ranlib"
+export GCJ_FOR_BUILD="${BUILD_PREFIX}gcj"
+export GFORTRAN_FOR_BUILD="${BUILD_PREFIX}gfortran"
+export DLLTOOL_FOR_BUILD="${BUILD_PREFIX}dlltool"
+export WINDRES_FOR_BUILD="${BUILD_PREFIX}windres"
+
+# Tools for host
+#CC
+#CFLAGS
+#CXX
+#CXXFLAGS
+#LD
+LDFLAGS=""
+#AS
+#AR
+#NM
+#RANLIB
+#GCJ
+#GFORTRAN
+export DLLTOOL="${HOST_PREFIX}dlltool"
+export WINDRES="${HOST_PREFIX}windres"
+
+# Tools for target
+export CC_FOR_TARGET="${TARGET_CC}"
+export CFLAGS_FOR_TARGET="${TARGET_CFLAGS}"
+export CXX_FOR_TARGET="${TARGET_CXX}"
+export CXXFLAGS_FOR_TARGET="${TARGET_CXXFLAGS}"
+export LD_FOR_TARGET="${TARGET_LD}"
+export LDFLAGS_FOR_TARGET="${TARGET_LDFLAGS}"
+export AS_FOR_TARGET="${TARGET_PREFIX}as"
+export AR_FOR_TARGET="${TARGET_PREFIX}ar"
+export NM_FOR_TARGET="${TARGET_PREFIX}nm"
+export RANLIB_FOR_TARGET="${TARGET_PREFIX}ranlib"
+export GCJ_FOR_TARGET="${TARGET_PREFIX}gcj"
+export GFORTRAN_FOR_TARGET="${TARGET_PREFIX}gfortran"
+export DLLTOOL_FOR_TARGET="${TARGET_PREFIX}dlltool"
+export WINDRES_FOR_TARGET="${TARGET_PREFIX}windres"
+
+EXTRA_OECONF_DEP ?= ""
+
+SYSROOT = "${WORKDIR}/sysroot"
+EXTRA_OECONF += ""
+EXTRA_OECONF_PATHS = " \
+ --with-local-prefix=$dollar{prefix}/local \
+ --with-gxx-include-dir=$dollar{prefix}/${TARGET_SYS}/usr/include/c++/${BINV} \
+ --with-build-sysroot=${SYSROOT} \
+ --with-sysroot=${SDK_REALPATH}/${TARGET_SYS} \
+"
+
+do_configure () {
+ # Work around Hardcoded path assumptions in gcc
+ mkdir -p ${SYSROOT}/usr
+ ln -sf ${STAGING_DIR_HOST}${layout_includedir} \
+ ${SYSROOT}/usr/include
+ ln -sf ${STAGING_DIR_HOST}${layout_libdir} \
+ ${SYSROOT}/usr/lib
+ (cd ${S} && gnu-configize) || die "failure running gnu-configize"
+ (cd ${S}/libstdc++-v3 && autoreconf)
+ canadian_sdk_runconf
+}
+
+do_compile () {
+ oe_runmake
+}
diff --git a/packages/gcc/gcc-package-canadian-sdk.inc b/packages/gcc/gcc-package-canadian-sdk.inc
new file mode 100644
index 0000000000..dff53cdd96
--- /dev/null
+++ b/packages/gcc/gcc-package-canadian-sdk.inc
@@ -0,0 +1,39 @@
+require gcc-package-sdk.inc
+
+PACKAGES += "libgcc libgcc-dev libgfortran-dev libmudflap libmudflap-dev"
+
+FILES_libgcc = "${libdir}/libgcc*.so.*"
+FILES_libgcc-dev = "${libdir}/libgcc*.so"
+
+FILES_libstdc++ = "${libdir}/libstdc++.so.*"
+FILES_libstdc++-dev = "\
+ ${incluedir}/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 \
+"
+
+# Packages emitted by our gcc-cross builds.
+#
+INHIBIT_PACKAGE_STRIP ?= ""
+OLD_INHIBIT_PACKAGE_STRIP := "${INHIBIT_PACKAGE_STRIP}"
+INHIBIT_PACKAGE_STRIP = "1"
+
+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)
+}
diff --git a/packages/gcc/mingw-gcc-3.4.5-20060117-2/includedir.patch b/packages/gcc/mingw-gcc-3.4.5-20060117-2/includedir.patch
new file mode 100644
index 0000000000..8836560e7e
--- /dev/null
+++ b/packages/gcc/mingw-gcc-3.4.5-20060117-2/includedir.patch
@@ -0,0 +1,12 @@
+diff -urN gcc-3.4.5-20060117-2-orig/gcc/Makefile.in gcc-3.4.5-20060117-2/gcc/Makefile.in
+--- gcc-3.4.5-20060117-2-orig/gcc/Makefile.in 2005-12-12 02:24:01.000000000 +0100
++++ gcc-3.4.5-20060117-2/gcc/Makefile.in 2008-10-02 16:07:17.000000000 +0200
+@@ -442,7 +442,7 @@
+ # Directory to search for site-specific includes.
+ local_includedir = $(local_prefix)/include
+ # local_includedir=$(libsubdir)/$(unlibsubdir)/..`echo $(exec_prefix) | sed -e 's|^$(prefix)||' -e 's|/[^/]*|/..|g'`/include
+-includedir = $(prefix)/include
++includedir = @includedir@
+ # where the info files go
+ infodir = @infodir@
+ # Where cpp should go besides $prefix/bin if necessary
diff --git a/packages/gcc/mingw-gcc-build.inc b/packages/gcc/mingw-gcc-build.inc
new file mode 100644
index 0000000000..4d7440f6d5
--- /dev/null
+++ b/packages/gcc/mingw-gcc-build.inc
@@ -0,0 +1,43 @@
+gcclibdir ?= "${libdir}/gcc"
+S = "${WORKDIR}/gcc-${PV}"
+B = "${S}/build.${HOST_SYS}.${TARGET_SYS}"
+BINV ?= "${PV}"
+
+LANGUAGES ?= "c,c++"
+
+EXTRA_OECONF_DEP ?= ""
+
+EXTRA_OECONF = "\
+ ${@['--enable-clocale=generic', ''][bb.data.getVar('USE_NLS', d, 1) != 'no']} \
+ --disable-shared \
+ --enable-languages=${LANGUAGES} \
+ --enable-threads=win32 \
+ --enable-c99 \
+ --enable-long-long \
+ --disable-maintainer-mode \
+ --disable-bootstrap \
+ --enable-target-optspace \
+ --disable-win32-registry \
+ --without-x \
+ --program-prefix=${TARGET_PREFIX} \
+ ${EXTRA_OECONF_PATHS} \
+ ${EXTRA_OECONF_DEP}"
+
+EXTRA_OECONF_PATHS = " \
+ --with-local-prefix=${prefix}/local \
+ --with-gxx-include-dir=${includedir}/c++/${BINV}"
+
+CPP = ""
+CPPFLAGS = ""
+
+do_configure () {
+ oe_runconf
+}
+
+do_stage_append () {
+ # Fixup various .la files
+ sed -i -e "s|installed=yes|installed=no|" -e "s|dependency_libs\s*=\s*.*|dependency_libs='-L${STAGING_DIR_HOST}${layout_libdir} ${LIBGCCS_VAR} -lc -lm '|" ${STAGING_DIR_HOST}${layout_libdir}/libsupc++.la || true
+ sed -i -e "s|installed=yes|installed=no|" -e "s|dependency_libs\s*=\s*.*|dependency_libs='-L${STAGING_DIR_HOST}${layout_libdir} ${LIBGCCS_VAR} -lc -lm '|" ${STAGING_DIR_HOST}${layout_libdir}/libstdc++.la || true
+ sed -i -e "s|installed=yes|installed=no|" -e "s|dependency_libs\s*=\s*.*|dependency_libs='-L${STAGING_DIR_HOST}${layout_libdir} ${LIBGCCS_VAR} -lc -lm '|" ${STAGING_DIR_HOST}${layout_libdir}/libg2c.la || true
+ sed -i -e "s|installed=yes|installed=no|" -e "s|dependency_libs\s*=\s*.*|dependency_libs='-L${STAGING_DIR_HOST}${layout_libdir} ${LIBGCCS_VAR} -lc -lm '|" ${STAGING_DIR_HOST}${layout_libdir}/libobjc.la || true
+}
diff --git a/packages/gcc/mingw-gcc-canadian-cross-initial_3.4.5-20060117-2.bb b/packages/gcc/mingw-gcc-canadian-cross-initial_3.4.5-20060117-2.bb
new file mode 100644
index 0000000000..f5ff761739
--- /dev/null
+++ b/packages/gcc/mingw-gcc-canadian-cross-initial_3.4.5-20060117-2.bb
@@ -0,0 +1,7 @@
+require mingw-gcc-canadian-cross_${PV}.bb
+require gcc-canadian-cross-initial.inc
+
+SRC_URI = "\
+ ${SOURCEFORGE_MIRROR}/mingw/gcc-core-${PV}-src.tar.gz \
+ file://includedir.patch;patch=1 \
+"
diff --git a/packages/gcc/mingw-gcc-canadian-cross_3.4.5-20060117-2.bb b/packages/gcc/mingw-gcc-canadian-cross_3.4.5-20060117-2.bb
new file mode 100644
index 0000000000..2a5d7f45d1
--- /dev/null
+++ b/packages/gcc/mingw-gcc-canadian-cross_3.4.5-20060117-2.bb
@@ -0,0 +1,26 @@
+PR = "r1"
+
+require gcc-configure-cross.inc
+require mingw-gcc_${PV}.bb
+
+inherit canadian-cross
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/mingw-gcc-${PV}"
+
+DEPENDS = "\
+ virtual/${TARGET_PREFIX}binutils \
+ virtual/${TARGET_PREFIX}libc-for-gcc \
+"
+
+PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
+
+do_configure_prepend() {
+ # ugly hack to come around the hardcoding of
+ # -isystem ${build_tooldir}/include which ends up pointing at
+ # $STAGING_DIR_SDK/$SDK_SYS/include
+ install -d ${STAGING_DIR_SDK}/${SDK_SYS}
+ ln -sf ${STAGING_DIR_SDK}${layout_includedir} \
+ ${STAGING_DIR_SDK}/${SDK_SYS}/include
+ ln -sf ${STAGING_DIR_SDK}${layout_libdir} \
+ ${STAGING_DIR_SDK}/${SDK_SYS}/lib
+}
diff --git a/packages/gdb/gdb-6.8/gdb-6.8-mingw-3.patch b/packages/gdb/gdb-6.8/gdb-6.8-mingw-3.patch
new file mode 100644
index 0000000000..7bfcca7518
--- /dev/null
+++ b/packages/gdb/gdb-6.8/gdb-6.8-mingw-3.patch
@@ -0,0 +1,425 @@
+diff -urp gdb-6.8_orig/gdb/gdbserver/remote-utils.c gdb-6.8/gdb/gdbserver/remote-utils.c
+--- gdb-6.8_orig/gdb/gdbserver/remote-utils.c 2008-01-29 16:51:50.000000000 -0800
++++ gdb-6.8/gdb/gdbserver/remote-utils.c 2008-04-09 14:04:30.000000000 -0700
+@@ -617,7 +617,12 @@ input_interrupt (int unused)
+
+ cc = read (remote_desc, &c, 1);
+
++#ifdef _WIN32_WINNT
++ // its normal in windows for current_inferior to be null.
++ if (cc != 1 || c != '\003' /*|| current_inferior == NULL*/)
++#else
+ if (cc != 1 || c != '\003' || current_inferior == NULL)
++#endif
+ {
+ fprintf (stderr, "input_interrupt, count = %d c = %d ('%c')\n",
+ cc, c, c);
+diff -urp gdb-6.8_orig/gdb/gdbserver/server.c gdb-6.8/gdb/gdbserver/server.c
+--- gdb-6.8_orig/gdb/gdbserver/server.c 2008-02-19 13:36:54.000000000 -0800
++++ gdb-6.8/gdb/gdbserver/server.c 2008-04-23 13:56:51.000000000 -0700
+@@ -29,6 +29,10 @@
+ #include <sys/wait.h>
+ #endif
+
++#ifdef _WIN32
++#include <windows.h>
++#endif
++
+ unsigned long cont_thread;
+ unsigned long general_thread;
+ unsigned long step_thread;
+@@ -268,6 +272,20 @@ monitor_show_help (void)
+ monitor_output (" Enable general debugging messages\n");
+ monitor_output (" set remote-debug <0|1>\n");
+ monitor_output (" Enable remote protocol debugging messages\n");
++#ifdef _WIN32
++ monitor_output (" get processlist\n");
++ monitor_output (" List remote processes with names and pid\n");
++ monitor_output (" get processlistmi\n");
++ monitor_output (" Process list in an MI-like format\n");
++#endif
++ monitor_output (" set env <name=value>\n");
++ monitor_output (" Set environment variable in remote environment\n");
++ monitor_output (" cd <directory>\n");
++ monitor_output (" Change current working directory\n");
++ monitor_output (" pwd\n");
++ monitor_output (" Print current working directory\n");
++ monitor_output (" shell <command line>\n");
++ monitor_output (" Execute command on remote target\n");
+ monitor_output (" exit\n");
+ monitor_output (" Quit GDBserver\n");
+ }
+@@ -279,6 +297,47 @@ monitor_show_help (void)
+ return; \
+ }
+
++#ifdef _WIN32
++typedef DWORD (__stdcall *GETPROCESSIMAGEFILENAME)(HANDLE hProcess, LPTSTR lpImageFileName, DWORD nSize);
++typedef BOOL (__stdcall *ENUMPROCESSES)(DWORD* pProcessIds, DWORD cb, DWORD* pBytesReturned);
++
++# define HAS_DEVICE(P) \
++((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
++&& (P)[1] == ':')
++# define FILE_SYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0)
++# define ISSLASH(C) ((C) == '/' || (C) == '\\')
++
++char *
++__basename (char const *name)
++{
++ char const *base = name += FILE_SYSTEM_PREFIX_LEN (name);
++ int all_slashes = 1;
++ char const *p;
++
++ for (p = name; *p; p++)
++ {
++ if (ISSLASH (*p))
++ base = p + 1;
++ else
++ all_slashes = 0;
++ }
++
++ /* If NAME is all slashes, arrange to return `/'. */
++ if (*base == '\0' && ISSLASH (*name) && all_slashes)
++ --base;
++
++ /* Make sure the last byte is not a slash. */
++ //assert (all_slashes || !ISSLASH (*(p - 1)));
++
++ return (char *) base;
++}
++#endif
++
++#ifndef _POSIX_PATH_MAX
++#define _POSIX_PATH_MAX 1024
++#define _POSIX_PATH_MAX_WAS_UNDEFINED
++#endif
++
+ /* Handle all of the extended 'q' packets. */
+ void
+ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
+@@ -664,6 +723,158 @@ handle_query (char *own_buf, int packet_
+ debug_threads = 1;
+ monitor_output ("Debug output enabled.\n");
+ }
++#ifdef _WIN32
++ else if (strncmp (mon, "get processlist", 15) == 0)
++ {
++ HINSTANCE lib = LoadLibrary("PSAPI.DLL");
++ GETPROCESSIMAGEFILENAME imageFilename = (GETPROCESSIMAGEFILENAME)GetProcAddress(lib, "GetProcessImageFileNameA");
++ ENUMPROCESSES enumProcesses = (ENUMPROCESSES)GetProcAddress(lib, "EnumProcesses");
++
++ char* name = (char*)malloc(MAX_PATH);
++
++ int miMode = (strcmp(mon, "get processlistmi") == 0);
++
++ DWORD* pids = (DWORD*)malloc(sizeof(DWORD)*1024);
++ memset(pids, 0, sizeof(pids));
++ DWORD size = 0;
++
++ if (!enumProcesses(pids, 1024 * sizeof(DWORD), &size))
++ {
++ free(pids);
++ free(mon);
++ return;
++ }
++
++ int cnt = 0;
++ int number = size / sizeof(DWORD);
++
++ char* miOutput = NULL;
++
++ if (!miMode)
++ monitor_output("Remote process list:\n");
++ else
++ {
++ miOutput = (char*)malloc((number * 255) * sizeof(char));
++ strcpy(miOutput, "^done,processlist=[");
++ }
++
++ for (cnt = 0; cnt < number; cnt++)
++ {
++ HMODULE hProcess = (HMODULE)OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pids[cnt]);
++ strcpy(name, "");
++ printf(name);
++
++ imageFilename(hProcess, name, MAX_PATH);
++
++ if (pids[cnt] > 4 && strcmp(name, "") != 0)
++ {
++ char item[2048] = "";
++ char tmp[24] = "0";
++ itoa(pids[cnt], tmp, 10);
++ strcat(item, tmp);
++ strcat(item, "=");
++ strcat(item, __basename(name));
++
++ if (!miMode)
++ {
++ strcat(item, "\n");
++ monitor_output(item);
++ }
++ else
++ {
++ strcat(miOutput, item);
++ strcat(miOutput, ",");
++ }
++ }
++
++ CloseHandle(hProcess);
++ }
++
++ if (miMode)
++ {
++ strcat(miOutput, "]\n");
++ monitor_output(miOutput);
++ free(miOutput);
++ }
++
++ FreeLibrary(lib);
++
++ free(pids);
++ free(name);
++ }
++#endif
++ else if (strncmp (mon, "set env ", 8) == 0)
++ {
++ char* envLine = mon + 8;
++ char* envName = strtok(envLine, "= ");
++ char* envValue = strtok(NULL, "= ");
++ if (envName && envValue)
++ {
++#ifdef _WIN32
++ SetEnvironmentVariable(envName, envValue);
++#else
++ setenv(envName, envValue, 1);
++#endif
++ monitor_output("Target environment variable set (");
++ monitor_output(envName);
++ monitor_output(" = ");
++ monitor_output(envValue);
++ monitor_output(").\n");
++ }
++ else
++ monitor_output("Incorrect format for environment variable.\n");
++ }
++ else if (strncmp (mon, "cd ", 3) == 0)
++ {
++ char* dir = mon + 3;
++ if (strlen(dir) > 0)
++ chdir(dir);
++ }
++ else if (strcmp(mon, "pwd") == 0)
++ {
++ long size = _POSIX_PATH_MAX;
++ char* current_directory = (char*)malloc(size);
++ getcwd(current_directory, size);
++ if (strlen(current_directory) > 0)
++ {
++ monitor_output(current_directory);
++ monitor_output("\n");
++ }
++ free(current_directory);
++ }
++ else if (strncmp (mon, "shell ", 6) == 0)
++ {
++ char* arg = mon + 6;
++
++ if (strlen(arg) == 0)
++ {
++ monitor_output("Inferior shells are not supported.");
++ free(mon);
++ return;
++ }
++
++ long size = _POSIX_PATH_MAX;
++ char* current_directory = (char*)malloc(size);
++ getcwd(current_directory, size);
++
++ int rc = system (arg);
++ char msg[255];
++ if (rc == -1)
++ {
++ sprintf(msg, "Cannot execute '%s': %s.\n", arg, strerror(errno));
++ monitor_output(msg);
++ }
++ else if (rc != -1)
++ {
++ sprintf(msg, "'%s' exited with status %d.\n", arg, rc);
++ monitor_output(msg);
++ }
++
++ /* Make sure to return to the directory GDB thinks it is, in case the
++ shell command we just ran changed it. */
++ chdir(current_directory);
++ free(current_directory);
++ }
+ else if (strcmp (mon, "set debug 0") == 0)
+ {
+ debug_threads = 0;
+@@ -699,6 +910,11 @@ handle_query (char *own_buf, int packet_
+ own_buf[0] = 0;
+ }
+
++#ifdef _POSIX_PATH_MAX_WAS_UNDEFINED
++#undef _POSIX_PATH_MAX
++#undef _POSIX_PATH_MAX_WAS_UNDEFINED
++#endif
++
+ /* Parse vCont packets. */
+ void
+ handle_v_cont (char *own_buf, char *status, int *signal)
+@@ -1503,6 +1719,8 @@ main (int argc, char *argv[])
+ fprintf (stderr, "\nChild terminated with signal = 0x%x (%s)\n",
+ target_signal_to_host (signal),
+ target_signal_to_name (signal));
++
++ kill_inferior();
+
+ if (extended_protocol)
+ goto restart;
+diff -urp gdb-6.8_orig/gdb/gdbserver/win32-low.c gdb-6.8/gdb/gdbserver/win32-low.c
+--- gdb-6.8_orig/gdb/gdbserver/win32-low.c 2008-02-14 14:41:39.000000000 -0800
++++ gdb-6.8/gdb/gdbserver/win32-low.c 2008-04-22 23:24:38.000000000 -0700
+@@ -38,7 +38,7 @@
+ #include <sys/cygwin.h>
+ #endif
+
+-#define LOG 0
++#define LOG 1
+
+ #define OUTMSG(X) do { printf X; fflush (stdout); } while (0)
+ #if LOG
+@@ -543,9 +543,9 @@ win32_create_inferior (char *program, ch
+ }
+ OUTMSG2 (("Command line is \"%s\"\n", args));
+
+-#ifdef CREATE_NEW_PROCESS_GROUP
++//#ifdef CREATE_NEW_PROCESS_GROUP
+ flags |= CREATE_NEW_PROCESS_GROUP;
+-#endif
++//#endif
+
+ ret = create_process (program, args, flags, &pi);
+ err = GetLastError ();
+@@ -684,8 +684,37 @@ win32_kill (void)
+ if (current_process_handle == NULL)
+ return;
+
+- TerminateProcess (current_process_handle, 0);
+- for (;;)
++ TerminateProcess (current_process_handle, 0);
++
++ // BKS - fix for terminating apps prior to their exit, lets go of execs.
++ winapi_DebugActiveProcessStop DebugActiveProcessStop = NULL;
++ winapi_DebugSetProcessKillOnExit DebugSetProcessKillOnExit = NULL;
++#ifdef _WIN32_WCE
++ HMODULE dll = GetModuleHandle (_T("COREDLL.DLL"));
++#else
++ HMODULE dll = GetModuleHandle (_T("KERNEL32.DLL"));
++#endif
++ DebugActiveProcessStop = GETPROCADDRESS (dll, DebugActiveProcessStop);
++ DebugSetProcessKillOnExit = GETPROCADDRESS (dll, DebugSetProcessKillOnExit);
++
++ if (DebugSetProcessKillOnExit != NULL
++ && DebugActiveProcessStop != NULL)
++ {
++ {
++ struct thread_resume resume;
++ resume.thread = -1;
++ resume.step = 0;
++ resume.sig = 0;
++ resume.leave_stopped = 0;
++ win32_resume (&resume);
++ }
++
++ DebugActiveProcessStop (current_process_id);
++ DebugSetProcessKillOnExit (FALSE);
++ }
++ // end BKS
++
++ for (;;)
+ {
+ if (!child_continue (DBG_CONTINUE, -1))
+ break;
+@@ -1186,6 +1215,7 @@ handle_exception (struct target_waitstat
+
+ ourstatus->kind = TARGET_WAITKIND_STOPPED;
+
++ //printf("handle exception....................%X\n", (unsigned int)code);
+ switch (code)
+ {
+ case EXCEPTION_ACCESS_VIOLATION:
+@@ -1196,7 +1226,13 @@ handle_exception (struct target_waitstat
+ OUTMSG2 (("STATUS_STACK_OVERFLOW"));
+ ourstatus->value.sig = TARGET_SIGNAL_SEGV;
+ break;
+- case STATUS_FLOAT_DENORMAL_OPERAND:
++ // BKS
++ case STATUS_INVALID_HANDLE:
++ OUTMSG2 (("STATUS_INVALID_HANDLE"));
++ ourstatus->value.sig = TARGET_SIGNAL_TRAP;
++ break;
++ // BKS
++ case STATUS_FLOAT_DENORMAL_OPERAND:
+ OUTMSG2 (("STATUS_FLOAT_DENORMAL_OPERAND"));
+ ourstatus->value.sig = TARGET_SIGNAL_FPE;
+ break;
+@@ -1453,7 +1489,8 @@ get_child_debug_event (struct target_wai
+ (unsigned) current_event.dwThreadId));
+ ourstatus->kind = TARGET_WAITKIND_EXITED;
+ ourstatus->value.integer = current_event.u.ExitProcess.dwExitCode;
+- CloseHandle (current_process_handle);
++ win32_kill(); // fixed problem with exec's not being let go after completion.
++ //CloseHandle (current_process_handle); // let this get done by win32_kill().
+ current_process_handle = NULL;
+ break;
+
+diff -urp gdb-6.8_orig/gdb/linespec.c gdb-6.8/gdb/linespec.c
+--- gdb-6.8_orig/gdb/linespec.c 2008-01-01 14:53:11.000000000 -0800
++++ gdb-6.8/gdb/linespec.c 2008-04-23 11:15:58.000000000 -0700
+@@ -1534,11 +1534,11 @@ symtab_from_filename (char **argptr, cha
+ file_symtab = lookup_symtab (copy);
+ if (file_symtab == 0)
+ {
+- if (!have_full_symbols () && !have_partial_symbols ())
+- error (_("No symbol table is loaded. Use the \"file\" command."));
++// if (!have_full_symbols () && !have_partial_symbols ())
++// error (_("No symbol table is loaded. Use the \"file\" command."));
+ if (not_found_ptr)
+ *not_found_ptr = 1;
+- throw_error (NOT_FOUND_ERROR, _("No source file named %s."), copy);
++ throw_error (NOT_FOUND_ERROR, _("No source file named %s in loaded symbols."), copy);
+ }
+
+ /* Discard the file name from the arg. */
+@@ -1744,13 +1744,13 @@ decode_variable (char *copy, int funfirs
+ if (msymbol != NULL)
+ return minsym_found (funfirstline, msymbol);
+
+- if (!have_full_symbols () &&
++ /*if (!have_full_symbols () &&
+ !have_partial_symbols () && !have_minimal_symbols ())
+- error (_("No symbol table is loaded. Use the \"file\" command."));
++ error (_("No symbol table is loaded. Use the \"file\" command."));*/
+
+ if (not_found_ptr)
+ *not_found_ptr = 1;
+- throw_error (NOT_FOUND_ERROR, _("Function \"%s\" not defined."), copy);
++ throw_error (NOT_FOUND_ERROR, _("Function \"%s\" not defined in loaded symbols."), copy);
+ }
+
+
+diff -urp gdb-6.8_orig/gdb/win32-nat.c gdb-6.8/gdb/win32-nat.c
+--- gdb-6.8_orig/gdb/win32-nat.c 2008-01-29 13:11:24.000000000 -0800
++++ gdb-6.8/gdb/win32-nat.c 2008-04-18 17:45:52.000000000 -0700
+@@ -1031,6 +1031,10 @@ handle_exception (struct target_waitstat
+ DEBUG_EXCEPTION_SIMPLE ("STATUS_STACK_OVERFLOW");
+ ourstatus->value.sig = TARGET_SIGNAL_SEGV;
+ break;
++ case STATUS_INVALID_HANDLE:
++ DEBUG_EXCEPTION_SIMPLE ("STATUS_INVALID_HANDLE");
++ ourstatus->value.sig = TARGET_SIGNAL_TRAP;
++ break;
+ case STATUS_FLOAT_DENORMAL_OPERAND:
+ DEBUG_EXCEPTION_SIMPLE ("STATUS_FLOAT_DENORMAL_OPERAND");
+ ourstatus->value.sig = TARGET_SIGNAL_FPE;
diff --git a/packages/gdb/gdb-6.8/gdb-6.8-mips-mingw-sim-fixup.patch b/packages/gdb/gdb-6.8/gdb-6.8-mips-mingw-sim-fixup.patch
new file mode 100644
index 0000000000..2a31e29174
--- /dev/null
+++ b/packages/gdb/gdb-6.8/gdb-6.8-mips-mingw-sim-fixup.patch
@@ -0,0 +1,17 @@
+---
+ sim/common/sim-signal.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: gdb-6.8/sim/common/sim-signal.c
+===================================================================
+--- gdb-6.8.orig/sim/common/sim-signal.c
++++ gdb-6.8/sim/common/sim-signal.c
+@@ -26,7 +26,7 @@ along with this program. If not, see <h
+ to not think the process has died (so it can be debugged at the point of
+ failure). */
+
+-#ifdef _MSC_VER
++#ifdef __WIN32
+ #ifndef SIGTRAP
+ #define SIGTRAP 5
+ #endif
diff --git a/packages/gdb/gdb-6.8/gdb-6.8-pr9638-ppc-canadian-configh.patch b/packages/gdb/gdb-6.8/gdb-6.8-pr9638-ppc-canadian-configh.patch
new file mode 100644
index 0000000000..83e85ba3cd
--- /dev/null
+++ b/packages/gdb/gdb-6.8/gdb-6.8-pr9638-ppc-canadian-configh.patch
@@ -0,0 +1,179 @@
+diff -urN gdb-6.8-pl1/sim/ppc/Makefile.in gdb-6.8-pl2/sim/ppc/Makefile.in
+--- gdb-6.8-pl1/sim/ppc/Makefile.in 2006-05-31 17:14:45.000000000 +0200
++++ gdb-6.8-pl2/sim/ppc/Makefile.in 2008-09-30 15:56:33.000000000 +0200
+@@ -61,7 +61,7 @@
+ AR = @AR@
+ AR_FLAGS = rc
+ CC = @CC@
+-CFLAGS = @CFLAGS@
++CFLAGS = @CFLAGS@ -DHAVE_CONFIG_H
+ CC_FOR_BUILD = @CC_FOR_BUILD@
+ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+ BISON = bison
+@@ -115,8 +115,8 @@
+ $(DEVZERO_CFLAGS)
+ SIM_FPU_CFLAGS = @sim_fpu_cflags@
+
+-STD_CFLAGS = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(WARNING_CFLAGS) $(SIM_CFLAGS) $(HDEFINES) $(TDEFINES) $(INCLUDES) $(INTL_CFLAGS) $(SIM_FPU_CFLAGS)
+-NOWARN_CFLAGS = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(SIM_CFLAGS) $(HDEFINES) $(TDEFINES) $(INCLUDES) $(SIM_FPU_CFLAGS)
++STD_CFLAGS = $(CFLAGS) -DHAVE_CONFIG_H $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(WARNING_CFLAGS) $(SIM_CFLAGS) $(HDEFINES) $(TDEFINES) $(INCLUDES) $(INTL_CFLAGS) $(SIM_FPU_CFLAGS)
++NOWARN_CFLAGS = $(CFLAGS) -DHAVE_CONFIG_H $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(SIM_CFLAGS) $(HDEFINES) $(TDEFINES) $(INCLUDES) $(SIM_FPU_CFLAGS)
+ BUILD_CFLAGS = $(CFLAGS_FOR_BUILD) $(INCLUDES) $(WARNING_CFLAGS)
+
+ BUILD_LDFLAGS =
+diff -urN gdb-6.8-orig/sim/ppc/basics.h gdb-6.8-pl1/sim/ppc/basics.h
+--- gdb-6.8-orig/sim/ppc/basics.h 1999-04-16 03:35:08.000000000 +0200
++++ gdb-6.8-pl1/sim/ppc/basics.h 2008-09-30 15:12:32.000000000 +0200
+@@ -86,7 +86,9 @@
+
+ /* Basic configuration */
+
++#ifdef HAVE_CONFIG_H
+ #include "config.h"
++#endif
+ #include "ppc-config.h"
+ #include "inline.h"
+
+diff -urN gdb-6.8-orig/sim/ppc/debug.c gdb-6.8-pl1/sim/ppc/debug.c
+--- gdb-6.8-orig/sim/ppc/debug.c 1999-04-16 03:35:08.000000000 +0200
++++ gdb-6.8-pl1/sim/ppc/debug.c 2008-09-30 15:12:27.000000000 +0200
+@@ -22,7 +22,9 @@
+ #ifndef _DEBUG_C_
+ #define _DEBUG_C_
+
++#ifdef HAVE_CONFIG_H
+ #include "config.h"
++#endif
+ #include "basics.h"
+
+ #ifdef HAVE_STDLIB_H
+diff -urN gdb-6.8-orig/sim/ppc/dgen.c gdb-6.8-pl1/sim/ppc/dgen.c
+--- gdb-6.8-orig/sim/ppc/dgen.c 1999-04-16 03:35:08.000000000 +0200
++++ gdb-6.8-pl1/sim/ppc/dgen.c 2008-09-30 15:12:22.000000000 +0200
+@@ -27,7 +27,9 @@
+ #include <ctype.h>
+ #include <stdarg.h>
+
++#ifdef HAVE_CONFIG_H
+ #include "config.h"
++#endif
+ #include "misc.h"
+ #include "lf.h"
+ #include "table.h"
+diff -urN gdb-6.8-orig/sim/ppc/filter.c gdb-6.8-pl1/sim/ppc/filter.c
+--- gdb-6.8-orig/sim/ppc/filter.c 1999-04-16 03:35:09.000000000 +0200
++++ gdb-6.8-pl1/sim/ppc/filter.c 2008-09-30 15:12:15.000000000 +0200
+@@ -21,7 +21,9 @@
+
+ #include <stdio.h>
+
++#ifdef HAVE_CONFIG_H
+ #include "config.h"
++#endif
+
+ #ifdef HAVE_STRING_H
+ #include <string.h>
+diff -urN gdb-6.8-orig/sim/ppc/filter_filename.c gdb-6.8-pl1/sim/ppc/filter_filename.c
+--- gdb-6.8-orig/sim/ppc/filter_filename.c 1999-04-16 03:35:08.000000000 +0200
++++ gdb-6.8-pl1/sim/ppc/filter_filename.c 2008-09-30 15:12:11.000000000 +0200
+@@ -18,7 +18,9 @@
+
+ */
+
++#ifdef HAVE_CONFIG_H
+ #include "config.h"
++#endif
+ #include "ppc-config.h"
+ #include "filter_filename.h"
+
+diff -urN gdb-6.8-orig/sim/ppc/igen.c gdb-6.8-pl1/sim/ppc/igen.c
+--- gdb-6.8-orig/sim/ppc/igen.c 2003-06-20 05:59:33.000000000 +0200
++++ gdb-6.8-pl1/sim/ppc/igen.c 2008-09-30 15:12:06.000000000 +0200
+@@ -25,7 +25,9 @@
+ #include "misc.h"
+ #include "lf.h"
+ #include "table.h"
++#ifdef HAVE_CONFIG_H
+ #include "config.h"
++#endif
+
+ #include "filter.h"
+
+diff -urN gdb-6.8-orig/sim/ppc/inline.c gdb-6.8-pl1/sim/ppc/inline.c
+--- gdb-6.8-orig/sim/ppc/inline.c 1999-04-16 03:35:10.000000000 +0200
++++ gdb-6.8-pl1/sim/ppc/inline.c 2008-09-30 15:11:58.000000000 +0200
+@@ -22,7 +22,9 @@
+ #ifndef _INLINE_C_
+ #define _INLINE_C_
+
++#ifdef HAVE_CONFIG_H
+ #include "config.h"
++#endif
+ #include "ppc-config.h"
+
+ #include "inline.h"
+diff -urN gdb-6.8-orig/sim/ppc/lf.c gdb-6.8-pl1/sim/ppc/lf.c
+--- gdb-6.8-orig/sim/ppc/lf.c 2002-05-30 17:07:06.000000000 +0200
++++ gdb-6.8-pl1/sim/ppc/lf.c 2008-09-30 15:33:35.000000000 +0200
+@@ -23,7 +23,9 @@
+ #include <stdarg.h>
+ #include <ctype.h>
+
++#ifdef HAVE_CONFIG_H
+ #include "config.h"
++#endif
+ #include "misc.h"
+ #include "lf.h"
+
+diff -urN gdb-6.8-orig/sim/ppc/misc.c gdb-6.8-pl1/sim/ppc/misc.c
+--- gdb-6.8-orig/sim/ppc/misc.c 1999-04-16 03:35:11.000000000 +0200
++++ gdb-6.8-pl1/sim/ppc/misc.c 2008-09-30 15:11:54.000000000 +0200
+@@ -23,7 +23,9 @@
+ #include <stdarg.h>
+ #include <ctype.h>
+
++#ifdef HAVE_CONFIG_H
+ #include "config.h"
++#endif
+ #include "misc.h"
+
+ #ifdef HAVE_STDLIB_H
+diff -urN gdb-6.8-orig/sim/ppc/misc.h gdb-6.8-pl1/sim/ppc/misc.h
+--- gdb-6.8-orig/sim/ppc/misc.h 2002-01-12 11:21:12.000000000 +0100
++++ gdb-6.8-pl1/sim/ppc/misc.h 2008-09-30 15:11:49.000000000 +0200
+@@ -21,7 +21,9 @@
+
+ /* Frustrating header junk */
+
++#ifdef HAVE_CONFIG_H
+ #include "config.h"
++#endif
+
+ #include <stdio.h>
+ #include <ctype.h>
+diff -urN gdb-6.8-orig/sim/ppc/sim-endian.c gdb-6.8-pl1/sim/ppc/sim-endian.c
+--- gdb-6.8-orig/sim/ppc/sim-endian.c 1999-04-16 03:35:11.000000000 +0200
++++ gdb-6.8-pl1/sim/ppc/sim-endian.c 2008-09-30 15:11:44.000000000 +0200
+@@ -22,7 +22,9 @@
+ #ifndef _SIM_ENDIAN_C_
+ #define _SIM_ENDIAN_C_
+
++#ifdef HAVE_CONFIG_H
+ #include "config.h"
++#endif
+ #include "basics.h"
+
+
+diff -urN gdb-6.8-orig/sim/ppc/table.c gdb-6.8-pl1/sim/ppc/table.c
+--- gdb-6.8-orig/sim/ppc/table.c 2002-01-12 11:21:12.000000000 +0100
++++ gdb-6.8-pl1/sim/ppc/table.c 2008-09-30 15:11:38.000000000 +0200
+@@ -25,7 +25,9 @@
+ #include <fcntl.h>
+ #include <ctype.h>
+
++#ifdef HAVE_CONFIG_H
+ #include "config.h"
++#endif
+ #include "misc.h"
+ #include "lf.h"
+ #include "table.h"
diff --git a/packages/gdb/gdb-canadian-cross.inc b/packages/gdb/gdb-canadian-cross.inc
new file mode 100644
index 0000000000..f472b538b0
--- /dev/null
+++ b/packages/gdb/gdb-canadian-cross.inc
@@ -0,0 +1,18 @@
+require gdb-common.inc
+
+inherit canadian-sdk
+
+EXTRA_OEMAKE = "'SUBDIRS=intl mmalloc libiberty opcodes bfd sim gdb etc utils' LDFLAGS='${BUILD_LDFLAGS}'"
+
+do_configure () {
+# override this function to avoid the autoconf/automake/aclocal/autoheader
+# calls for now
+ (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
+
+ # Fix for issues when system's texinfo version >= 4.10
+ # (See https://bugzilla.redhat.com/show_bug.cgi?id=345621)
+ sed -i -e "s@egrep 'texinfo.*'@egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|4.[1-9][0-9]+|[5-9])'@" '${S}/configure'
+
+
+ oe_runconf
+}
diff --git a/packages/gdb/gdb-canadian-sdk_6.8.bb b/packages/gdb/gdb-canadian-sdk_6.8.bb
new file mode 100644
index 0000000000..1eefddc917
--- /dev/null
+++ b/packages/gdb/gdb-canadian-sdk_6.8.bb
@@ -0,0 +1,12 @@
+require gdb-canadian-cross.inc
+
+SRC_URI += "file://gcc-4.3-build-error.patch;patch=1;pnum=0 \
+ file://gdb-6.8-mingw-3.patch;patch=1 \
+ file://gdb-6.8-pr9638-ppc-canadian-configh.patch;patch=1 \
+ file://gdb-6.8-mips-mingw-sim-fixup.patch;patch=1"
+
+PR = "r1"
+
+do_stage() {
+ :
+}
diff --git a/packages/gmp/gmp-canadian_4.2.4.bb b/packages/gmp/gmp-canadian_4.2.4.bb
new file mode 100644
index 0000000000..27d179a569
--- /dev/null
+++ b/packages/gmp/gmp-canadian_4.2.4.bb
@@ -0,0 +1,24 @@
+PV = "4.2.4"
+require gmp_${PV}.bb
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gmp-${PV}"
+S = "${WORKDIR}/gmp-${PV}"
+
+inherit canadian-native
+
+# darwin 'hacks'
+EXTRA_OECONF_build-darwin = " --enable-shared "
+OLD_STAGING := "${STAGING_BINDIR}"
+OLD_TARGET := "${TARGET_SYS}"
+OLD_HOST := "${HOST_SYS}"
+OLD_BUILD := "${BUILD_SYS}"
+
+PATH_prepend_build-darwin = "${OLD_STAGING}/${OLD_HOST}:${OLD_STAGING}:"
+
+TARGET_SYS_build-darwin = "none-apple-darwin"
+HOST_SYS_build-darwin = "none-apple-darwin"
+BUILD_SYS_build-darwin = "none-apple-darwin"
+
+do_compile_append_build-darwin() {
+ oe_runmake check
+}
diff --git a/packages/meta/external-toolchain.bb b/packages/meta/external-toolchain.bb
index e1dae5a2fe..4c70054b0f 100644
--- a/packages/meta/external-toolchain.bb
+++ b/packages/meta/external-toolchain.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "This package allows OE to work with an external toolchain generated \
by meta-toolchain instead of building its own. It expects that toolchain \
- to be located in SDK_PREFIX/prefix."
+ to be located in SDK_PATH/prefix."
PROVIDES = "\
linux-libc-headers \
diff --git a/packages/meta/meta-toolchain.bb b/packages/meta/meta-toolchain.bb
index b6517999b0..db432dbb70 100644
--- a/packages/meta/meta-toolchain.bb
+++ b/packages/meta/meta-toolchain.bb
@@ -24,7 +24,7 @@ SDK_OUTPUT2 = "${SDK_DIR}/image-extras"
SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
IPKG_HOST = "opkg-cl -f ${IPKGCONF_SDK} -o ${SDK_OUTPUT}"
-IPKG_TARGET = "opkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}/${SDK_PREFIX}/${TARGET_SYS}"
+IPKG_TARGET = "opkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}/${SDK_PATH}/${TARGET_SYS}"
TOOLCHAIN_HOST_TASK ?= "task-sdk-host"
TOOLCHAIN_TARGET_TASK ?= "task-sdk-bare"
@@ -67,7 +67,7 @@ do_populate_sdk() {
${IPKG_HOST} update
${IPKG_HOST} -force-depends install ${TOOLCHAIN_HOST_TASK}
- mkdir -p ${SDK_OUTPUT}/${SDK_PREFIX}/${TARGET_SYS}/usr/lib/opkg
+ mkdir -p ${SDK_OUTPUT}/${SDK_PATH}/${TARGET_SYS}/usr/lib/opkg
${IPKG_TARGET} update
${IPKG_TARGET} install ${TOOLCHAIN_TARGET_TASK}
diff --git a/packages/mingw/mingw-runtime-headers.inc b/packages/mingw/mingw-runtime-headers.inc
new file mode 100644
index 0000000000..3bc5cd4307
--- /dev/null
+++ b/packages/mingw/mingw-runtime-headers.inc
@@ -0,0 +1,19 @@
+DEPENDS = "mingw-w32api-headers"
+PROVIDES = "virtual/${TARGET_PREFIX}libc-initial"
+
+do_configure() {
+ :
+}
+
+do_compile() {
+ :
+}
+
+do_install() {
+ :
+}
+
+do_stage() {
+ mkdir -p ${STAGING_INCDIR}
+ cp -r ${S}/include/* ${STAGING_INCDIR}/
+}
diff --git a/packages/mingw/mingw-runtime-headers_3.15.1.bb b/packages/mingw/mingw-runtime-headers_3.15.1.bb
new file mode 100644
index 0000000000..8c77b6a594
--- /dev/null
+++ b/packages/mingw/mingw-runtime-headers_3.15.1.bb
@@ -0,0 +1,3 @@
+require mingw-runtime_${PV}.bb
+
+require mingw-runtime-headers.inc
diff --git a/packages/mingw/mingw-runtime.inc b/packages/mingw/mingw-runtime.inc
new file mode 100644
index 0000000000..d984911fff
--- /dev/null
+++ b/packages/mingw/mingw-runtime.inc
@@ -0,0 +1,17 @@
+inherit canadian-native autotools
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial mingw-w32api"
+
+PROVIDES = "virtual/${TARGET_PREFIX}libc virtual/${TARGET_PREFIX}libc-for-gcc"
+
+DEFAULT_PREFERENCE = "0"
+DEFAULT_PREFERENCE_sdk-mingw32 = "1"
+
+PACKAGES = ""
+
+B = "${WORKDIR}/build-${TARGET_SYS}"
+
+do_configure() {
+ oe_runconf
+}
diff --git a/packages/mingw/mingw-runtime_3.15.1.bb b/packages/mingw/mingw-runtime_3.15.1.bb
new file mode 100644
index 0000000000..c691d0749d
--- /dev/null
+++ b/packages/mingw/mingw-runtime_3.15.1.bb
@@ -0,0 +1,7 @@
+require mingw-runtime.inc
+
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/mingw/mingwrt-${PV}-mingw32-src.tar.gz"
+
+S = "${WORKDIR}/mingwrt-${PV}-mingw32"
diff --git a/packages/mingw/mingw-w32api-headers.inc b/packages/mingw/mingw-w32api-headers.inc
new file mode 100644
index 0000000000..bbd97f9593
--- /dev/null
+++ b/packages/mingw/mingw-w32api-headers.inc
@@ -0,0 +1,19 @@
+DEPENDS = ""
+PROVIDES = "mingw-w32api-headers"
+
+do_configure() {
+ :
+}
+
+do_compile() {
+ :
+}
+
+do_install() {
+ :
+}
+
+do_stage() {
+ mkdir -p ${STAGING_INCDIR}
+ cp -r ${S}/include/* ${STAGING_INCDIR}/
+}
diff --git a/packages/mingw/mingw-w32api-headers_3.13.bb b/packages/mingw/mingw-w32api-headers_3.13.bb
new file mode 100644
index 0000000000..5d17f8db87
--- /dev/null
+++ b/packages/mingw/mingw-w32api-headers_3.13.bb
@@ -0,0 +1,3 @@
+require mingw-w32api_${PV}.bb
+
+require mingw-w32api-headers.inc
diff --git a/packages/mingw/mingw-w32api.inc b/packages/mingw/mingw-w32api.inc
new file mode 100644
index 0000000000..ecb1cd290a
--- /dev/null
+++ b/packages/mingw/mingw-w32api.inc
@@ -0,0 +1,13 @@
+inherit canadian-native autotools
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEPENDS = "virtual/${TARGET_PREFIX}gcc-initial"
+
+PROVIDES = "mingw-w32api"
+
+DEFAULT_PREFERENCE = "0"
+DEFAULT_PREFERENCE_sdk-mingw32 = "1"
+
+PACKAGES = ""
+
+B = "${WORKDIR}/build-${TARGET_SYS}"
diff --git a/packages/mingw/mingw-w32api_3.13.bb b/packages/mingw/mingw-w32api_3.13.bb
new file mode 100644
index 0000000000..1b8064f913
--- /dev/null
+++ b/packages/mingw/mingw-w32api_3.13.bb
@@ -0,0 +1,7 @@
+require mingw-w32api.inc
+
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/mingw/w32api-${PV}-mingw32-src.tar.gz"
+
+S = "${WORKDIR}/w32api-${PV}-mingw32"
diff --git a/packages/mpfr/mpfr-canadian_2.3.1.bb b/packages/mpfr/mpfr-canadian_2.3.1.bb
new file mode 100644
index 0000000000..e35f24eac9
--- /dev/null
+++ b/packages/mpfr/mpfr-canadian_2.3.1.bb
@@ -0,0 +1,3 @@
+require mpfr_${PV}.bb
+inherit canadian-native
+DEPENDS = "gmp-canadian"
diff --git a/packages/tasks/task-sdk-canadian-host.bb b/packages/tasks/task-sdk-canadian-host.bb
new file mode 100644
index 0000000000..418e8cde91
--- /dev/null
+++ b/packages/tasks/task-sdk-canadian-host.bb
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2007 OpenedHand Ltd
+#
+
+DESCRIPTION = "Host packages for the standalone SDK or external toolchain"
+PR = "r1"
+LICENSE = "MIT"
+ALLOW_EMPTY = "1"
+
+inherit canadian-sdk
+
+PACKAGES = "${PN}"
+
+RDEPENDS_${PN} = "\
+ binutils-canadian-sdk \
+ gcc-canadian-sdk \
+ gdb-canadian-sdk \
+ "