2007-04-20 15:11:56 +00:00
|
|
|
DESCRIPTION = "Meta package for building a installable toolchain"
|
|
|
|
LICENSE = "MIT"
|
2008-03-17 13:19:35 +00:00
|
|
|
DEPENDS = "opkg-native ipkg-utils-native fakeroot-native sed-native"
|
2007-04-20 15:11:56 +00:00
|
|
|
|
2007-09-01 22:17:06 +00:00
|
|
|
inherit sdk meta
|
2007-04-20 15:11:56 +00:00
|
|
|
|
|
|
|
SDK_DIR = "${WORKDIR}/sdk"
|
|
|
|
SDK_OUTPUT = "${SDK_DIR}/image"
|
2008-01-25 17:47:24 +00:00
|
|
|
SDK_OUTPUT2 = "${SDK_DIR}/image-extras"
|
2007-04-20 15:11:56 +00:00
|
|
|
SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
|
|
|
|
|
2008-03-17 13:19:35 +00:00
|
|
|
IPKG_HOST = "opkg-cl -f ${IPKGCONF_SDK} -o ${SDK_OUTPUT}"
|
|
|
|
IPKG_TARGET = "opkg-cl -f ${IPKGCONF_TARGET} -o ${SDK_OUTPUT}/${SDK_PREFIX}/${TARGET_SYS}"
|
2007-04-20 15:11:56 +00:00
|
|
|
|
2007-09-01 22:49:32 +00:00
|
|
|
TOOLCHAIN_HOST_TASK ?= "task-sdk-host"
|
2008-02-07 20:22:10 +00:00
|
|
|
TOOLCHAIN_TARGET_TASK ?= "task-poky-standalone-sdk-target task-poky-standalone-sdk-target-dbg"
|
2008-01-09 13:46:44 +00:00
|
|
|
TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${DISTRO_VERSION}"
|
2007-06-28 11:09:21 +00:00
|
|
|
|
2007-09-01 22:49:32 +00:00
|
|
|
RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
|
2007-04-20 15:11:56 +00:00
|
|
|
|
|
|
|
do_populate_sdk() {
|
|
|
|
rm -rf ${SDK_OUTPUT}
|
|
|
|
mkdir -p ${SDK_OUTPUT}
|
|
|
|
|
2007-09-01 22:49:32 +00:00
|
|
|
package_update_index_ipk
|
2007-09-01 22:17:06 +00:00
|
|
|
package_generate_ipkg_conf
|
|
|
|
|
|
|
|
for arch in ${PACKAGE_ARCHS}; do
|
2007-08-22 09:22:16 +00:00
|
|
|
revipkgarchs="$arch $revipkgarchs"
|
2007-09-01 22:17:06 +00:00
|
|
|
done
|
2007-04-20 15:11:56 +00:00
|
|
|
|
|
|
|
${IPKG_HOST} update
|
2008-03-17 13:19:35 +00:00
|
|
|
${IPKG_HOST} install ${TOOLCHAIN_HOST_TASK}
|
2007-04-20 15:11:56 +00:00
|
|
|
|
|
|
|
${IPKG_TARGET} update
|
2007-09-01 22:49:32 +00:00
|
|
|
${IPKG_TARGET} install ${TOOLCHAIN_TARGET_TASK}
|
2007-04-20 15:11:56 +00:00
|
|
|
|
2008-03-17 13:19:35 +00:00
|
|
|
install -d ${SDK_OUTPUT}/${prefix}/usr/lib/opkg
|
|
|
|
mv ${SDK_OUTPUT}/usr/lib/opkg/* ${SDK_OUTPUT}/${prefix}/usr/lib/opkg/
|
|
|
|
rm -Rf ${SDK_OUTPUT}/usr/lib
|
2007-06-14 15:06:42 +00:00
|
|
|
|
2008-04-17 11:48:23 +00:00
|
|
|
install -d ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/${layout_sysconfdir}
|
|
|
|
install -m 0644 ${IPKGCONF_TARGET} ${IPKGCONF_SDK} ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/${layout_sysconfdir}/
|
|
|
|
|
2008-03-14 16:31:03 +00:00
|
|
|
install -d ${SDK_OUTPUT}/${sysconfdir}
|
2008-04-17 11:48:23 +00:00
|
|
|
install -m 0644 ${IPKGCONF_SDK} ${SDK_OUTPUT}/${sysconfdir}/
|
2007-06-13 23:35:51 +00:00
|
|
|
|
2007-11-24 23:08:48 +00:00
|
|
|
# extract and store ipks, pkgdata and shlibs data
|
2008-05-07 16:55:56 +00:00
|
|
|
target_pkgs=`cat ${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/usr/lib/opkg/status | grep Package: | cut -f 2 -d ' '`
|
2008-01-25 17:47:24 +00:00
|
|
|
mkdir -p ${SDK_OUTPUT2}/${prefix}/ipk/
|
|
|
|
mkdir -p ${SDK_OUTPUT2}/${prefix}/pkgdata/runtime/
|
|
|
|
mkdir -p ${SDK_OUTPUT2}/${prefix}/${TARGET_SYS}/shlibs/
|
2007-06-13 23:35:51 +00:00
|
|
|
for pkg in $target_pkgs ; do
|
2007-08-22 09:22:16 +00:00
|
|
|
for arch in $revipkgarchs; do
|
2007-11-24 23:08:48 +00:00
|
|
|
pkgnames=${DEPLOY_DIR_IPK}/$arch/${pkg}_*_$arch.ipk
|
|
|
|
if [ -e $pkgnames ]; then
|
|
|
|
echo "Found $pkgnames"
|
2008-01-25 17:47:24 +00:00
|
|
|
cp $pkgnames ${SDK_OUTPUT2}/${prefix}/ipk/
|
2007-11-24 23:08:48 +00:00
|
|
|
orig_pkg=`ipkg-list-fields $pkgnames | grep OE: | cut -d ' ' -f2`
|
2007-08-22 09:22:16 +00:00
|
|
|
pkg_subdir=$arch${TARGET_VENDOR}${@['-' + bb.data.getVar('TARGET_OS', d, 1), ''][bb.data.getVar('TARGET_OS', d, 1) == ('' or 'custom')]}
|
2008-01-25 17:47:24 +00:00
|
|
|
mkdir -p ${SDK_OUTPUT2}/${prefix}/pkgdata/$pkg_subdir/runtime
|
|
|
|
cp ${STAGING_DIR}/pkgdata/$pkg_subdir/$orig_pkg ${SDK_OUTPUT2}/${prefix}/pkgdata/$pkg_subdir/
|
2007-08-22 09:22:16 +00:00
|
|
|
subpkgs=`cat ${STAGING_DIR}/pkgdata/$pkg_subdir/$orig_pkg | grep PACKAGES: | cut -b 10-`
|
2007-06-13 23:35:51 +00:00
|
|
|
for subpkg in $subpkgs; do
|
2008-01-25 17:47:24 +00:00
|
|
|
cp ${STAGING_DIR}/pkgdata/$pkg_subdir/runtime/$subpkg ${SDK_OUTPUT2}/${prefix}/pkgdata/$pkg_subdir/runtime/
|
2007-08-22 09:22:16 +00:00
|
|
|
if [ -e ${STAGING_DIR}/pkgdata/$pkg_subdir/runtime/$subpkg.packaged ];then
|
2008-01-25 17:47:24 +00:00
|
|
|
cp ${STAGING_DIR}/pkgdata/$pkg_subdir/runtime/$subpkg.packaged ${SDK_OUTPUT2}/${prefix}/pkgdata/$pkg_subdir/runtime/
|
2007-06-13 23:35:51 +00:00
|
|
|
fi
|
2007-11-12 11:06:34 +00:00
|
|
|
if [ -e ${STAGING_DIR_TARGET}/shlibs/$subpkg.list ]; then
|
2008-01-25 17:47:24 +00:00
|
|
|
cp ${STAGING_DIR_TARGET}/shlibs/$subpkg.* ${SDK_OUTPUT2}/${prefix}/${TARGET_SYS}/shlibs/
|
2007-06-13 23:35:51 +00:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
2008-05-05 22:46:30 +00:00
|
|
|
# Fix or remove broken .la files
|
|
|
|
for i in `find ${SDK_OUTPUT}/${prefix}/${TARGET_SYS} -name \*.la`; do
|
|
|
|
sed -i -e "/^dependency_libs=/s,\([[:space:]']\)${layout_base_libdir},\1${prefix}/${TARGET_SYS}${layout_base_libdir},g" \
|
|
|
|
-e "/^dependency_libs=/s,\([[:space:]']\)${layout_libdir},\1${prefix}/${TARGET_SYS}${layout_libdir},g" \
|
|
|
|
-e "/^dependency_libs=/s,\-\([LR]\)${layout_base_libdir},-\1${prefix}/${TARGET_SYS}${layout_base_libdir},g" \
|
|
|
|
-e "/^dependency_libs=/s,\-\([LR]\)${layout_libdir},-\1${prefix}/${TARGET_SYS}${layout_libdir},g" \
|
|
|
|
-e 's/^installed=yes$/installed=no/' $i
|
|
|
|
done
|
2008-04-07 16:50:37 +00:00
|
|
|
rm -f ${SDK_OUTPUT}/${prefix}/lib/*.la
|
2007-04-20 15:11:56 +00:00
|
|
|
|
2007-12-19 18:28:49 +00:00
|
|
|
# Setup site file for external use
|
|
|
|
siteconfig=${SDK_OUTPUT}/${prefix}/site-config
|
|
|
|
touch $siteconfig
|
|
|
|
for sitefile in ${CONFIG_SITE} ; do
|
|
|
|
cat $sitefile >> $siteconfig
|
|
|
|
done
|
|
|
|
|
|
|
|
# Create environment setup script
|
|
|
|
script=${SDK_OUTPUT}/${prefix}/environment-setup
|
|
|
|
touch $script
|
|
|
|
echo 'export PATH=${prefix}/bin:$PATH' >> $script
|
|
|
|
echo 'export PKG_CONFIG_SYSROOT_DIR=${prefix}/${TARGET_SYS}' >> $script
|
2008-04-17 11:48:23 +00:00
|
|
|
echo 'export PKG_CONFIG_PATH=${prefix}/${TARGET_SYS}${layout_libdir}/pkgconfig' >> $script
|
2007-12-19 18:28:49 +00:00
|
|
|
echo 'export CONFIG_SITE=${prefix}/site-config' >> $script
|
2008-05-15 13:04:49 +00:00
|
|
|
echo 'export CC=${TARGET_PREFIX}gcc' >> $script
|
2008-05-15 13:05:36 +00:00
|
|
|
echo 'export CONFIGURE_FLAGS="--target=${TARGET_SYS} --host=${TARGET_SYS}"' >> $script
|
2008-05-15 13:04:49 +00:00
|
|
|
if [ "${TARGET_OS}" = "darwin8" ]; then
|
|
|
|
echo 'export TARGET_CFLAGS="-I${prefix}/${TARGET_SYS}${layout_includedir}"' >> $script
|
|
|
|
echo 'export TARGET_LDFLAGS="-L${prefix}/${TARGET_SYS}${layout_libdir}"' >> $script
|
|
|
|
# Workaround darwin toolchain sysroot path problems
|
|
|
|
cd ${SDK_OUTPUT}/usr
|
|
|
|
ln -s local /usr/local
|
|
|
|
fi
|
2008-04-17 11:10:59 +00:00
|
|
|
echo "alias opkg='LD_LIBRARY_PATH=${prefix}/lib ${prefix}/bin/opkg-cl -f ${sysconfdir}/opkg-sdk.conf -o ${prefix}'" >> $script
|
2008-04-17 11:48:23 +00:00
|
|
|
echo "alias opkg-target='LD_LIBRARY_PATH=${prefix}/lib ${prefix}/bin/opkg-cl -f ${prefix}/${TARGET_SYS}${layout_sysconfdir}/opkg.conf -o ${prefix}/${TARGET_SYS}'" >> $script
|
2007-12-19 18:28:49 +00:00
|
|
|
|
2008-02-15 17:29:40 +00:00
|
|
|
# Add version information
|
|
|
|
versionfile=${SDK_OUTPUT}/${prefix}/version
|
|
|
|
touch $versionfile
|
|
|
|
echo 'Distro: ${DISTRO}' >> $versionfile
|
|
|
|
echo 'Distro Version: ${DISTRO_VERSION}' >> $versionfile
|
|
|
|
echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
|
|
|
|
echo 'Timestamp: ${DATETIME}' >> $versionfile
|
|
|
|
|
2007-12-19 18:28:49 +00:00
|
|
|
# Package it up
|
|
|
|
mkdir -p ${SDK_DEPLOY}
|
2007-04-20 15:11:56 +00:00
|
|
|
cd ${SDK_OUTPUT}
|
2008-01-09 13:46:44 +00:00
|
|
|
fakeroot tar cfj ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 .
|
2008-01-25 17:47:24 +00:00
|
|
|
cd ${SDK_OUTPUT2}
|
|
|
|
fakeroot tar cfj ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}-extras.tar.bz2 .
|
2007-04-20 15:11:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
do_populate_sdk[nostamp] = "1"
|
|
|
|
do_populate_sdk[recrdeptask] = "do_package_write"
|
|
|
|
addtask populate_sdk before do_build after do_install
|