From d76e2129ebea6e864190800ac7505ee42f6f3f68 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 26 Mar 2012 12:56:06 +0200 Subject: [PATCH] Add openembedded build --- build/openembedded/README | 51 +++++++++++++ .../files/igep0020/alsa_8khz.patch | 13 ++++ build/openembedded/libexosip2_3.5.0.bb | 17 +++++ build/openembedded/linphone-common.inc | 74 +++++++++++++++++++ build/openembedded/linphone-common_git.inc | 33 +++++++++ build/openembedded/linphone_+git-nogtk.bb | 13 ++++ build/openembedded/spandsp_0.0.6-pre18.bb | 23 ++++++ build/openembedded/speex_git.bb | 45 +++++++++++ 8 files changed, 269 insertions(+) create mode 100644 build/openembedded/README create mode 100644 build/openembedded/files/igep0020/alsa_8khz.patch create mode 100644 build/openembedded/libexosip2_3.5.0.bb create mode 100644 build/openembedded/linphone-common.inc create mode 100644 build/openembedded/linphone-common_git.inc create mode 100644 build/openembedded/linphone_+git-nogtk.bb create mode 100644 build/openembedded/spandsp_0.0.6-pre18.bb create mode 100644 build/openembedded/speex_git.bb diff --git a/build/openembedded/README b/build/openembedded/README new file mode 100644 index 000000000..b8e895451 --- /dev/null +++ b/build/openembedded/README @@ -0,0 +1,51 @@ +Recipes for open embedded: http://www.openembedded.org + + +Documentations: +http://docs.openembedded.org/usermanual/ +http://bitbake.berlios.de/manual/ + + + +Instructions for compilation from sources: (requires 10 Go of free space) +- Choose a distribution and build it. + For example, to build Angstrom follow the guide at http://www.angstrom-distribution.org/building-angstrom + For IGEPv2 use environment variable MACHINE=igep0020 + +- Add recipes to the pool with an higher priority). + See http://bitbake.berlios.de/manual/ch04s02.html#id870544 Example 4.8. Using “bbfile collections” + Example: + BBFILES = "/Data/work/angstrom/angstrom-setup-scripts/sources/openembedded/recipes/*/*.bb /home/guillaume/dev/linphone-daemon/build/openembedded/*.bb" + BBFILE_COLLECTIONS = "upstream local" + BBFILE_PATTERN_upstream = "^/Data/" + BBFILE_PATTERN_local = "^/home/" + BBFILE_PRIORITY_upstream = "5" + BBFILE_PRIORITY_local = "10" + +- Prepare compilation + Source appropriate environment with "~/.oe/enviro*" + Change directory to where you launched Angstrom install script. + +- Compile linphone / linphonec + bitbake -c clean linphone + bitbake linphone + + +- Find the generated packages "*.ipk" + Example: /Data/work/angstrom/angstrom-setup-scripts/build/tmp-angstrom_2008_1/deploy/glibc/ipk/armv7a/ + + + + +Installation +- check network connectivity + * ping linphone.org + * see "route -n" + * see "/etc/resolv.conf" +- update package list + * opkg update +- copy ipk files to install to /tmp +- eventually remove previously installed packages +- install with "opkg install libortp*.ipk libmediastreamer*.ipk liblinphone*.ipk linphonec*.ipk" + + diff --git a/build/openembedded/files/igep0020/alsa_8khz.patch b/build/openembedded/files/igep0020/alsa_8khz.patch new file mode 100644 index 000000000..17774d4e6 --- /dev/null +++ b/build/openembedded/files/igep0020/alsa_8khz.patch @@ -0,0 +1,13 @@ +--- linphone/mediastreamer2/src/alsa.c_orig 2011-05-24 12:39:33.824600109 +0200 ++++ linphone/mediastreamer2/src/alsa.c 2011-05-24 12:40:04.760407404 +0200 +@@ -32,8 +32,8 @@ + /*in case of troubles with a particular driver, try incrementing ALSA_PERIOD_SIZE + to 512, 1024, 2048, 4096... + then try incrementing the number of periods*/ +-#define ALSA_PERIODS 8 +-#define ALSA_PERIOD_SIZE 256 ++#define ALSA_PERIODS 4 ++#define ALSA_PERIOD_SIZE 512 + + /*uncomment the following line if you have problems with an alsa driver + having sound quality trouble:*/ diff --git a/build/openembedded/libexosip2_3.5.0.bb b/build/openembedded/libexosip2_3.5.0.bb new file mode 100644 index 000000000..706494064 --- /dev/null +++ b/build/openembedded/libexosip2_3.5.0.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "High level Session Initiation Protocol (SIP) library" +SECTION = "libs" +PRIORITY = "optional" +LICENSE = "GPL" +DEPENDS = "libosip2" +SRCNAME = "libeXosip2" +LEAD_SONAME = "libeXosip2" + +PR = "r1" +SRC_URI = "http://download.savannah.nongnu.org/releases/exosip/${SRCNAME}-${PV}.tar.gz" +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit autotools pkgconfig +EXTRA_OECONF = "--disable-josua" +DEFAULT_PREFERENCE = "3" +SRC_URI[md5sum] = "51e85725571870614e448f63c33c8996" +SRC_URI[sha256sum] = "46010e62a6f675df13e5be759d033b6bce1bd5882eebb4acd553f9dd3b461afc" diff --git a/build/openembedded/linphone-common.inc b/build/openembedded/linphone-common.inc new file mode 100644 index 000000000..cd595b7df --- /dev/null +++ b/build/openembedded/linphone-common.inc @@ -0,0 +1,74 @@ +SECTION = "x11/network" +SECTION_liblinphone = "libs/network" +SECTION_libmediastreamer = "libs/network" +SECTION_libortp = "libs/network" +SECTION_linphonec = "console/network" + +SRC_URI_append_igep0020 = " file://alsa_8khz.patch" + +DEPENDS = "intltool readline libosip2 libexosip2 speex alsa-lib spandsp" +DEPENDS_append_video = " libxv ffmpeg libv4l" +DEPENDS_append_gtk = " gtk+" +DEPENDS_${PN} = "intltool liblinphone" +DEPENDS_${PN}_append_gtk = " gtk+" +DEPENDS_${PN}_append_video = " libxv" +DEPENDS_${PN}c = "liblinphone readline" +DEPENDS_liblinphone = "libmediastreamer libortp libosip2 libexosip2" +DEPENDS_libmediastreamer = "speex alsa-lib libortp" +DEPENDS_libmediastreamer_append_video = " ffmpeg libv4l" + +PROVIDES = "linphonec liblinphone libmediastreamer libortp" +PROVIDES_gtk = "linphone linphonec liblinphone libmediastreamer libortp" + +inherit autotools pkgconfig gettext + +export PKG_CONFIG=${STAGING_BINDIR_NATIVE}/pkg-config + +LINPHONE_OE_ENABLE_TESTS = "--disable-tests" +LINPHONE_OE_ENABLE_VIDEO = "--disable-video" +LINPHONE_OE_ENABLE_VIDEO_video = "--with-ffmpeg=${STAGING_DIR_HOST}${layout_exec_prefix} --enable-video" + +LINPHONE_OE_ENABLE_CONSOLE_UI = "no" +LINPHONE_OE_ENABLE_CONSOLE_UI_console = "yes" + +LINPHONE_OE_ENABLE_GTK_UI = "no" +LINPHONE_OE_ENABLE_GTK_UI_gtk = "yes" + +do_install_append(){ + install -d ${D}${bindir} +} + +EXTRA_OECONF = " \ + ${LINPHONE_OE_ENABLE_TESTS} \ + ${LINPHONE_OE_ENABLE_VIDEO} \ + --enable-alsa \ + --with-osip=${STAGING_DIR_HOST}${layout_exec_prefix} \ + --with-readline=${STAGING_DIR_HOST}${layout_exec_prefix} \ + --with-speex=${STAGING_DIR_HOST}${layout_exec_prefix} \ + --disable-manual --enable-tests=yes \ + --enable-console_ui=${LINPHONE_OE_ENABLE_CONSOLE_UI} \ + --enable-gtk_ui=${LINPHONE_OE_ENABLE_GTK_UI} \ + --with-realprefix=/usr \ + " + +PACKAGES_gtk = "${PN}-dbg ${PN} ${PN}-doc ${PN}-dev ${PN}-locale ${PN}c linphone-rings liblinphone libmediastreamer-bin libmediastreamer libortp ${PN}-utils" +PACKAGES = "${PN}c linphone-rings liblinphone libmediastreamer-bin libmediastreamer libortp ${PN}-utils" + +FILES_${PN} = " \ + ${bindir}/linphone \ + ${datadir}/linphone \ + ${datadir}/pixmaps \ + ${datadir}/applications \ + ${datadir}/gnome/apps \ + ${datadir}/sounds/linphone/hello8000.wav \ + ${datadir}/sounds/linphone/hello16000.wav \ + ${datadir}/images/nowebcamCIF.jpg \ + " +FILES_${PN}c = "${bindir}/linphonec ${bindir}/linphone-daemon ${bindir}/linphone-daemon-pipetest ${bindir}/linphonecsh ${bindir}/sipomatic ${datadir}/sounds/linphone/ringback.wav" +FILES_${PN}-rings = "${datadir}/sounds/linphone/rings" +FILES_liblinphone = "${libdir}/liblinphone.so.*" +FILES_libmediastreamer-bin = "/usr/libexec/mediastream" +FILES_libmediastreamer = "${libdir}/libmediastreamer.so.*" +FILES_libortp = "${libdir}/libortp.so.*" +FILES_${PN}-dev += "${libdir}/*.a ${libdir}/*.la ${libdir}/pkgconfig ${includedir}" +FILES_${PN}-utils = "${bindir}/test_ecc ${bindir}/test_lsd" diff --git a/build/openembedded/linphone-common_git.inc b/build/openembedded/linphone-common_git.inc new file mode 100644 index 000000000..399890e70 --- /dev/null +++ b/build/openembedded/linphone-common_git.inc @@ -0,0 +1,33 @@ + +SRCREV = "c65a7ee79d66ee2c0eb19cde129221be650c07ca" +L_GIT_SRC_URI = "gitosis@git.linphone.org:linphone-daemon" +PR_append = "+gitr${SRCREV}" + +LINPHONE_TMP_DIR="${HOME}/LINPHONE_TMP_${SRCREV}" +SRC_URI = "file://${LINPHONE_TMP_DIR}/linphone.tar.gz" + +S = "${WORKDIR}/linphone" + +# bitbake git fetcher currently doesn't handle git submodules +# There is also a problem with autogen and AC_SUBST +do_fetch_prepend () { + import os,bb + bb.note("Hack preparing clone in %s" %"${LINPHONE_TMP_DIR}") + os.system("rm -rf ${LINPHONE_TMP_DIR}") + os.system("mkdir -p ${LINPHONE_TMP_DIR}") + + bb.note("Hack cloning linphone !recursively") + os.system("cd ${LINPHONE_TMP_DIR}; git clone --depth 1 --recursive ${L_GIT_SRC_URI} linphone; tag=${SRCREV};") + + bb.note("Hack launching autogen.sh manually") + os.system("cd ${LINPHONE_TMP_DIR}/linphone; ./autogen.sh") + + bb.note("Hack preparing linphone.tar.gz") + os.system("cd ${LINPHONE_TMP_DIR}; tar czf linphone.tar.gz --exclude .git linphone") +} + +require linphone-common.inc + + +#Required to avoid compile errors on May 2011. +EXTRA_OECONF +=" --disable-strict" diff --git a/build/openembedded/linphone_+git-nogtk.bb b/build/openembedded/linphone_+git-nogtk.bb new file mode 100644 index 000000000..8a8896c9f --- /dev/null +++ b/build/openembedded/linphone_+git-nogtk.bb @@ -0,0 +1,13 @@ +## THIS unusable work in progress ## + +DESCRIPTION = "Audio/video SIP-based IP phone (console edition)" +HOMEPAGE = "http://www.linphone.org/?lang=us" +LICENSE = "GPLv2" +PR="r9" + +DEFAULT_PREFERENCE = "3" +OVERRIDES_append = ":console" + +#PARALLEL_MAKE="V=1" + +require linphone-common_git.inc diff --git a/build/openembedded/spandsp_0.0.6-pre18.bb b/build/openembedded/spandsp_0.0.6-pre18.bb new file mode 100644 index 000000000..53d25f2c2 --- /dev/null +++ b/build/openembedded/spandsp_0.0.6-pre18.bb @@ -0,0 +1,23 @@ +PR = "r0" + +SRC_URI = "http://www.soft-switch.org/downloads/spandsp/${PN}-0.0.6pre18.tgz" + +S = "${WORKDIR}/spandsp-0.0.6" + +# *cough* +do_configure_append() { + rm config.log +} + +DESCRIPTION = "A library of many DSP functions for telephony." +HOMEPAGE = "http://www.soft-switch.org" +SECTION = "libs" +LICENSE = "LGPL" +DEPENDS = "tiff libxml2" + +inherit autotools + +PARALLEL_MAKE = "" + +SRC_URI[md5sum] = "98330bc00a581ed8d71ebe34afabbcf9" +SRC_URI[sha256sum] = "835cd886105e4e39791f0e8cfe004c39b069f2e6dcb0795a68a6c79b5d14af2c" diff --git a/build/openembedded/speex_git.bb b/build/openembedded/speex_git.bb new file mode 100644 index 000000000..b61a2eed1 --- /dev/null +++ b/build/openembedded/speex_git.bb @@ -0,0 +1,45 @@ +DESCRIPTION = "Speex is an Open Source/Free Software patent-free audio compression format designed for speech." +SECTION = "libs/multimedia" +LICENSE = "BSD" +HOMEPAGE = "http://www.speex.org" +DEPENDS = "libogg" +PV = "1.1+git" +PR = "r3" +SPEEX_TMP_DIR="${HOME}/SPEEX_TMP" +SRC_URI = "file://${SPEEX_TMP_DIR}/speex.tar.gz" + +S = "${WORKDIR}/speex" + +PARALLEL_MAKE = "" + +inherit autotools pkgconfig + +LEAD_SONAME = "libspeex.so" + +#check for TARGET_FPU=soft and inform configure of the result so it can disable some floating points +EXTRA_OECONF += "--enable-fixed-point --enable-armv7neon-asm" + +do_fetch_prepend () { + import os,bb + bb.note("Hack preparing clone in %s" %"${SPEEX_TMP_DIR}") + os.system("rm -rf ${SPEEX_TMP_DIR}") + os.system("mkdir -p ${SPEEX_TMP_DIR}") + + os.system("cd ${SPEEX_TMP_DIR}; git clone --depth 1 git://git.linphone.org/speex") + + os.system("cd ${SPEEX_TMP_DIR}/speex; ./autogen.sh") + + os.system("cd ${SPEEX_TMP_DIR}; tar czf speex.tar.gz --exclude .git speex") +} + +do_configure_append() { + sed -i s/"^OGG_CFLAGS.*$"/"OGG_CFLAGS = "/g Makefile */Makefile */*/Makefile + sed -i s/"^OGG_LIBS.*$"/"OGG_LIBS = -logg"/g Makefile */Makefile */*/Makefile + find . -name "Makefile" -exec sed -i s,-I/usr/include,, {} \; +} + +PACKAGES =+ "${PN}-utils ${PN}-dsp" +FILES_${PN}-utils = "${bindir}/speex*" +FILES_${PN}-dsp = "${libdir}/libspeexdsp.so.*" +FILES_${PN} = "${libdir}/libspeex.so.*" +