summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/autotools.bbclass17
-rw-r--r--packages/libtool/libtool-1.5.10/add_sysroot_function.patch103
-rw-r--r--packages/libtool/libtool-sdk_1.5.10.bb53
-rw-r--r--packages/meta/meta-toolchain.bb21
-rw-r--r--packages/tasks/task-fso-toolchain-host.bb2
-rw-r--r--packages/tasks/task-openmoko-toolchain-host.bb2
-rw-r--r--packages/tasks/task-sdk-host.bb3
-rw-r--r--packages/tasks/task-slugos-toolchain-host.bb2
8 files changed, 194 insertions, 9 deletions
diff --git a/classes/autotools.bbclass b/classes/autotools.bbclass
index adb57f6cc9..fd8687ebb6 100644
--- a/classes/autotools.bbclass
+++ b/classes/autotools.bbclass
@@ -142,13 +142,20 @@ autotools_do_configure() {
autotools_do_install() {
oe_runmake 'DESTDIR=${D}' install
+}
+do_install_append() {
for i in `find ${D} -name "*.la"` ; do \
- sed -i -e s:${STAGING_LIBDIR}:${libdir}:g $i
- sed -i -e s:${D}::g $i
- sed -i -e 's:-I${WORKDIR}\S*: :g' $i
- sed -i -e 's:-L${WORKDIR}\S*: :g' $i
- done
+ sed -i -e '/^dependency_libs=/s,${WORKDIR}[[:alnum:]/\._+-]*/\([[:alnum:]\._+-]*\),${libdir}/\1,g' $i
+ sed -i -e s:${CROSS_DIR}/${HOST_SYS}::g $i
+ sed -i -e s:${CROSS_DIR}::g $i
+ sed -i -e s:${STAGING_LIBDIR}:${libdir}:g $i
+ sed -i -e s:${STAGING_DIR_HOST}::g $i
+ sed -i -e s:${STAGING_DIR}::g $i
+ sed -i -e s:${S}::g $i
+ sed -i -e s:${T}::g $i
+ sed -i -e s:${D}::g $i
+ done
}
STAGE_TEMP="${WORKDIR}/temp-staging"
diff --git a/packages/libtool/libtool-1.5.10/add_sysroot_function.patch b/packages/libtool/libtool-1.5.10/add_sysroot_function.patch
new file mode 100644
index 0000000000..4ce68d92b7
--- /dev/null
+++ b/packages/libtool/libtool-1.5.10/add_sysroot_function.patch
@@ -0,0 +1,103 @@
+Index: libtool-1.5.10/ltmain.in
+===================================================================
+--- libtool-1.5.10.orig/ltmain.in 2008-07-25 16:24:21.000000000 +0800
++++ libtool-1.5.10/ltmain.in 2008-07-25 18:31:41.000000000 +0800
+@@ -137,6 +137,52 @@
+ # Shell function definitions:
+ # This seems to be the best place for them
+
++# func_add_sysroot_path add LIBTOOL_SYSROOT_PATH as prefix in search path
++# -L/usr/lib -> -L/home/foo/usr/lib if sysroot is /home/foo
++func_add_sysroot_path ()
++{
++ _suffix=""
++ _leading=""
++ case "${1}" in
++ -L*)
++ _suffix=`echo ${1} |sed -e s:-L::`
++ _suffix=${LIBTOOL_SYSROOT_PATH}${_suffix}
++ _leading="-L"
++ ;;
++ -I*)
++ _suffix=`echo ${1} |sed -e s:-I::`
++ _suffix=${LIBTOOL_SYSROOT_PATH}${_suffix}
++ _leading="-I"
++ ;;
++ /*)
++ _suffix=${LIBTOOL_SYSROOT_PATH}${1}
++ _leading=""
++ ;;
++ *)
++ _suffix=${1}
++ _leading=""
++ esac
++ eval add_sysroot_path_result=${_leading}${_suffix}
++}
++
++# func_rm_sysroot_path remove LIBTOOL_SYSROOT_PATH
++# -L/home/foo/usr/lib => if sysroot is /home/foo
++func_rm_sysroot_path () {
++ __rm_sysroot_path=${1}
++ case $__rm_sysroot_path in
++ -L*)
++ __rm_sysroot_path=`echo ${1}|sed -e s:$LIBTOOL_SYSROOT_PATH:/:g`
++ ;;
++ -I*)
++ __rm_sysroot_path=`echo ${1}|sed -e s:$LIBTOOL_SYSROOT_PATH:/:g`
++ ;;
++ /*)
++ __rm_sysroot_path=`echo ${1}|sed -e s:$LIBTOOL_SYSROOT_PATH:/:g`
++ ;;
++ esac
++ rm_sysroot_path_result=`echo ${__rm_sysroot_path}|sed -e s://:/:g`
++}
++
+ # func_win32_libid arg
+ # return the library type of file 'arg'
+ #
+@@ -2196,6 +2242,16 @@
+ *) . ./$lib ;;
+ esac
+
++ # Add Sysroot to path #
++ tmp_depen_libs=
++ for depen_lib in $dependency_libs; do
++ func_add_sysroot_path $depen_lib
++ tmp_depen_libs="$tmp_depen_libs $add_sysroot_path_result "
++ done
++ dependency_libs=$tmp_depen_libs
++ func_add_sysroot_path $libdir
++ libdir="$add_sysroot_path_result"
++
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+@@ -2777,6 +2833,10 @@
+ # $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+ # fi
+ if ! grep "^installed=no" $deplib > /dev/null; then
++ #Add Sysroot to libdir
++ func_add_sysroot_path $libdir
++ libdir=$add_sysroot_path_result
++
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+@@ -5243,6 +5303,17 @@
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ esac
++
++ # Remove Sysroot from path before write in .la file #
++ tmp_depen_libs=
++ for depen_lib in $dependency_libs; do
++ func_rm_sysroot_path $depen_lib
++ tmp_depen_libs="$tmp_depen_libs $rm_sysroot_path_result "
++ done
++ dependency_libs=$tmp_depen_libs
++ func_rm_sysroot_path $libdir
++ libdir="$rm_sysroot_path_result"
++
+ $echo > $output "\
+ # $outputname - a libtool library file
+ # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
diff --git a/packages/libtool/libtool-sdk_1.5.10.bb b/packages/libtool/libtool-sdk_1.5.10.bb
new file mode 100644
index 0000000000..e068b531ad
--- /dev/null
+++ b/packages/libtool/libtool-sdk_1.5.10.bb
@@ -0,0 +1,53 @@
+require libtool.inc
+require libtool_${PV}.bb
+
+PR = "r0"
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libtool-${PV}"
+SRC_URI_append = " file://rpath-control.patch;patch=1 \
+ file://libdir-la.patch;patch=1 \
+ file://libdir-la2.patch;patch=1 \
+ file://prefix.patch;patch=1 \
+ file://tag.patch;patch=1 \
+ file://install-path-check.patch;patch=1 \
+ file://nousrlib.patch;patch=1 \
+ file://add_sysroot_function.patch;patch=1 \
+ "
+
+S = "${WORKDIR}/libtool-${PV}"
+
+inherit sdk
+
+do_configure_prepend () {
+ rm -f ltmain.shT
+ date=`/bin/sh ./mkstamp < ./ChangeLog` && \
+ sed -e 's/@''PACKAGE@/libtool/' -e 's/@''VERSION@/1.5.10/' \
+ -e "s%@""TIMESTAMP@%$date%" ./ltmain.in > ltmain.shT
+ mv -f ltmain.shT ltmain.sh || \
+ (rm -f ltmain.sh && cp ltmain.shT ltmain.sh && rm -f ltmain.shT)
+ cp ltmain.sh ./libltdl/
+}
+
+do_install () {
+ install -d ${D}${bindir}/
+ install -m 0755 ${HOST_SYS}-libtool ${D}${bindir}/
+ install -m 0755 libtoolize ${D}${bindir}/
+
+ install -d ${D}${libdir}/
+ oe_libinstall -a -so -C libltdl libltdl ${D}${libdir}
+
+ install -d ${D}${includedir}/
+ install -m 0644 libltdl/ltdl.h ${D}${includedir}
+
+ install -d ${D}${datadir}/libtool/
+ install -c config.guess ${D}${datadir}/libtool/
+ install -c config.sub ${D}${datadir}/libtool/
+ install -c -m 0644 ltmain.sh ${D}${datadir}/libtool/
+
+ install -d ${D}${datadir}/info/
+ install -c -m 0644 doc/libtool.info ${D}${datadir}/info/
+
+ install -d ${D}${datadir}/aclocal/
+ install -c -m 0645 libtool.m4 ${D}${datadir}/aclocal/
+ install -c -m 0644 ltdl.m4 ${D}${datadir}/aclocal/
+}
+
diff --git a/packages/meta/meta-toolchain.bb b/packages/meta/meta-toolchain.bb
index 2a59ba2208..b6517999b0 100644
--- a/packages/meta/meta-toolchain.bb
+++ b/packages/meta/meta-toolchain.bb
@@ -34,6 +34,24 @@ TOOLCHAIN_OUTPUTNAME ?= "${DISTRO}-${DISTRO_VERSION}-${FEED_ARCH}-${TARGET_OS}-$
RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
+TOOLCHAIN_FEED_URI ?= "${DISTRO_FEED_URI}"
+
+modify_opkg_conf () {
+ OUTPUT_OPKGCONF_TARGET="${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/${layout_sysconfdir}/opkg.conf"
+ OUTPUT_OPKGCONF_HOST="${SDK_OUTPUT}/${prefix}/${TARGET_SYS}/${layout_sysconfdir}/opkg-sdk.conf"
+ OUTPUT_OPKGCONF_SDK="${SDK_OUTPUT}/${sysconfdir}/opkg-sdk.conf"
+ rm ${OUTPUT_OPKGCONF_TARGET}
+ rm ${OUTPUT_OPKGCONF_HOST}
+ rm ${OUTPUT_OPKGCONF_SDK}
+ opkgarchs="${PACKAGE_ARCHS}"
+ priority=1
+ for arch in ${opkgarchs}; do
+ echo "arch ${arch} ${priority}" >> ${OUTPUT_OPKGCONF_TARGET};
+ echo "src/gz ${arch} ${TOOLCHAIN_FEED_URI}/${arch}" >> ${OUTPUT_OPKGCONF_TARGET};
+ priority=$(expr ${priority} + 5);
+ done
+}
+
do_populate_sdk() {
rm -rf ${SDK_OUTPUT}
mkdir -p ${SDK_OUTPUT}
@@ -120,6 +138,7 @@ do_populate_sdk() {
script=${SDK_OUTPUT}/${prefix}/environment-setup
touch $script
echo 'export PATH=${prefix}/bin:$PATH' >> $script
+ echo 'export LIBTOOL_SYSROOT_PATH=${prefix}/${TARGET_SYS}' >> $script
echo 'export PKG_CONFIG_SYSROOT_DIR=${prefix}/${TARGET_SYS}' >> $script
echo 'export PKG_CONFIG_PATH=${prefix}/${TARGET_SYS}${layout_libdir}/pkgconfig' >> $script
echo 'export CONFIG_SITE=${prefix}/site-config' >> $script
@@ -134,6 +153,8 @@ do_populate_sdk() {
echo 'Metadata Revision: ${METADATA_REVISION}' >> $versionfile
echo 'Timestamp: ${DATETIME}' >> $versionfile
+ modify_opkg_conf
+
# Package it up
mkdir -p ${SDK_DEPLOY}
cd ${SDK_OUTPUT}
diff --git a/packages/tasks/task-fso-toolchain-host.bb b/packages/tasks/task-fso-toolchain-host.bb
index afb1ce830b..2b28de30e6 100644
--- a/packages/tasks/task-fso-toolchain-host.bb
+++ b/packages/tasks/task-fso-toolchain-host.bb
@@ -4,6 +4,6 @@ DESCRIPTION = "Packages for a standalone FSO SDK or external toolchain"
LICENSE = "MIT"
ALLOW_EMPTY = "1"
-PR = "r0"
+PR = "r1"
PACKAGES = "${PN}"
diff --git a/packages/tasks/task-openmoko-toolchain-host.bb b/packages/tasks/task-openmoko-toolchain-host.bb
index 7f39d0ce76..7d4398b201 100644
--- a/packages/tasks/task-openmoko-toolchain-host.bb
+++ b/packages/tasks/task-openmoko-toolchain-host.bb
@@ -4,7 +4,7 @@ DESCRIPTION = "Packages for a standalone Openmoko SDK or external toolchain"
LICENSE = "MIT"
ALLOW_EMPTY = "1"
-PR = "r1"
+PR = "r2"
PACKAGES = "${PN}"
diff --git a/packages/tasks/task-sdk-host.bb b/packages/tasks/task-sdk-host.bb
index a8ac3706c4..3707259453 100644
--- a/packages/tasks/task-sdk-host.bb
+++ b/packages/tasks/task-sdk-host.bb
@@ -3,7 +3,7 @@
#
DESCRIPTION = "Host packages for the standalone SDK or external toolchain"
-PR = "r2"
+PR = "r3"
LICENSE = "MIT"
ALLOW_EMPTY = "1"
@@ -17,4 +17,5 @@ RDEPENDS_${PN} = "\
gdb-cross-sdk \
pkgconfig-sdk \
opkg-sdk \
+ libtool-sdk \
"
diff --git a/packages/tasks/task-slugos-toolchain-host.bb b/packages/tasks/task-slugos-toolchain-host.bb
index 7550301bfd..a688f10e42 100644
--- a/packages/tasks/task-slugos-toolchain-host.bb
+++ b/packages/tasks/task-slugos-toolchain-host.bb
@@ -1,5 +1,5 @@
require task-sdk-host.bb
-PR = "r0"
+PR = "r1"
DESCRIPTION = "Packages for a standalone SlugOS external toolchain"
ALLOW_EMPTY = "1"