Patchwork tbb: add 4.1 20130116 version (4.1 update 2)

login
register
mail settings
Submitter Marcin Juszkiewicz
Date March 25, 2013, 9:20 a.m.
Message ID <1364203235-2737-1-git-send-email-marcin.juszkiewicz@linaro.org>
Download mbox | patch
Permalink /patch/46823/
State Superseded, archived
Headers show

Comments

Marcin Juszkiewicz - March 25, 2013, 9:20 a.m.
IntelĀ® Threading Building Blocks (IntelĀ® TBB) lets you easily write
parallel C++ programs that take full advantage of multicore performance,
that are portable and composable, and that have future-proof
scalability.

Natively supports only x86(-64) targets with fallbacks for non-supported
architectures. There is a work at Linaro to add AArch64 and ARMv7a
support.

Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
---
 .../recipes-support/tbb/tbb/cross-compile.patch    | 25 +++++++++++++++++
 meta-oe/recipes-support/tbb/tbb/tbb.pc             | 11 ++++++++
 meta-oe/recipes-support/tbb/tbb_4.1.bb             | 31 ++++++++++++++++++++++
 3 files changed, 67 insertions(+)
 create mode 100644 meta-oe/recipes-support/tbb/tbb/cross-compile.patch
 create mode 100644 meta-oe/recipes-support/tbb/tbb/tbb.pc
 create mode 100644 meta-oe/recipes-support/tbb/tbb_4.1.bb
Khem Raj - March 26, 2013, 5:59 a.m.
On Mar 25, 2013, at 2:20 AM, Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> wrote:

> +do_compile() {
> +    oe_runmake compiler=gcc arch=${HOST_ARCH} runtime=cc4.7_libc2.17_kernel3.8 tbb tbbmalloc
> +}


hmmm do you have to encode the tools versions like that, say in future we move to gcc 4.8 or kernel 3.9
will this need adjusting too ?
Marcin Juszkiewicz - March 26, 2013, 7:11 a.m.
W dniu 26.03.2013 06:59, Khem Raj pisze:
> On Mar 25, 2013, at 2:20 AM, Marcin Juszkiewicz

>> +do_compile() { +    oe_runmake compiler=gcc arch=${HOST_ARCH}
>> runtime=cc4.7_libc2.17_kernel3.8 tbb tbbmalloc +}

> hmmm do you have to encode the tools versions like that, say in
> future we move to gcc 4.8 or kernel 3.9 will this need adjusting too?

If runtime is not defined it is created based on host system so can be
totally wrong. From quick look at makefiles there is only compiler part
checked for "cc3" or "cc4" - to add some arguments to flags.

New version sent.
Martin Jansa - March 29, 2013, 12:21 p.m.
On Tue, Mar 26, 2013 at 08:11:31AM +0100, Marcin Juszkiewicz wrote:
> W dniu 26.03.2013 06:59, Khem Raj pisze:
> > On Mar 25, 2013, at 2:20 AM, Marcin Juszkiewicz
> 
> >> +do_compile() { +    oe_runmake compiler=gcc arch=${HOST_ARCH}
> >> runtime=cc4.7_libc2.17_kernel3.8 tbb tbbmalloc +}
> 
> > hmmm do you have to encode the tools versions like that, say in
> > future we move to gcc 4.8 or kernel 3.9 will this need adjusting too?
> 
> If runtime is not defined it is created based on host system so can be
> totally wrong. From quick look at makefiles there is only compiler part
> checked for "cc3" or "cc4" - to add some arguments to flags.
> 
> New version sent.

Applied, thanks!

Hopefully in right (last) revision.

Would be great if you can update patchwork status and use PATCHvN for
next patches.

memcached/libmemcached are still pending (unresolved review comments 
afaik).

> 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel

Patch

diff --git a/meta-oe/recipes-support/tbb/tbb/cross-compile.patch b/meta-oe/recipes-support/tbb/tbb/cross-compile.patch
new file mode 100644
index 0000000..930a861
--- /dev/null
+++ b/meta-oe/recipes-support/tbb/tbb/cross-compile.patch
@@ -0,0 +1,25 @@ 
+Author: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
+
+Upstream-Status: Inappropriate [embedded specific]
+---
+ build/linux.gcc.inc |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- tbb41_20121003oss.orig/build/linux.gcc.inc
++++ tbb41_20121003oss/build/linux.gcc.inc
+@@ -40,12 +40,13 @@ DYLIB_KEY = -shared
+ EXPORT_KEY = -Wl,--version-script,
+ LIBDL = -ldl
+ 
+ TBB_NOSTRICT = 1
+ 
+-CPLUS = g++
+-CONLY = gcc
++CPLUS = $(CXX)
++CONLY = $(CC)
++CPLUS_FLAGS = $(CXXFLAGS)
+ LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
+ LIBS += -lpthread -lrt
+ LINK_FLAGS = -Wl,-rpath-link=.
+ C_FLAGS = $(CPLUS_FLAGS)
+ # gcc 4.4 and higher support -std=c++0x
diff --git a/meta-oe/recipes-support/tbb/tbb/tbb.pc b/meta-oe/recipes-support/tbb/tbb/tbb.pc
new file mode 100644
index 0000000..644b64f
--- /dev/null
+++ b/meta-oe/recipes-support/tbb/tbb/tbb.pc
@@ -0,0 +1,11 @@ 
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: Threading Building Blocks
+Description: Intel's parallelism library for C++
+URL: http://www.threadingbuildingblocks.org/
+Version: 3.0+r018
+Libs: -L${libdir} -ltbb
+Cflags: -I${includedir} 
diff --git a/meta-oe/recipes-support/tbb/tbb_4.1.bb b/meta-oe/recipes-support/tbb/tbb_4.1.bb
new file mode 100644
index 0000000..5f7c8a5
--- /dev/null
+++ b/meta-oe/recipes-support/tbb/tbb_4.1.bb
@@ -0,0 +1,31 @@ 
+DESCRIPTION = "Parallelism library for C++ - runtime files \
+ TBB is a library that helps you leverage multi-core processor \
+ performance without having to be a threading expert. It represents a \
+ higher-level, task-based parallelism that abstracts platform details \
+ and threading mechanism for performance and scalability."
+HOMEPAGE = "http://threadingbuildingblocks.org/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2c7f2caf277a3933e3acdf7f89d54cc1"
+PRDATE = "20130116"
+PR = "r${PRDATE}"
+
+SRC_URI = "http://threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb41_${PRDATE}oss_src.tgz \
+           file://cross-compile.patch \
+           file://tbb.pc"
+
+S = "${WORKDIR}/tbb41_${PRDATE}oss/"
+
+SRC_URI[md5sum] = "3809790e1001a1b32d59c9fee590ee85"
+SRC_URI[sha256sum] = "4ae2c10899e3b6ef2f686013ec5901fc658444ca90178efaca6014b0665c34b6"
+
+do_compile() {
+    oe_runmake compiler=gcc arch=${HOST_ARCH} runtime=cc4.7_libc2.17_kernel3.8 tbb tbbmalloc
+}
+
+do_install() {
+    install -d ${D}${includedir} ${D}${libdir}/pkgconfig
+    rm ${S}/include/tbb/index.html -f
+    cp -a ${S}/include/tbb ${D}${includedir}
+    install -m 0755 ${B}/build/linux_*_release/lib*.so* ${D}${libdir}
+    install -m 0644 ${WORKDIR}/tbb.pc ${D}${libdir}/pkgconfig
+}