$ git show --format=fuller --patch-with-stat --summary 6519d37ba51180017b022742320c3675c4e89bd0
commit 6519d37ba51180017b022742320c3675c4e89bd0
Author: Bernhard Rosenkraenzer <bero@lindev.ch>
AuthorDate: Sat Feb 15 02:39:17 2020 +0100
Commit: Bernhard Rosenkraenzer <bero@lindev.ch>
CommitDate: Sat Feb 15 02:39:17 2020 +0100
2020.1
---
.abf.yml | 2 +-
.gitignore | 12 -
CHANGES.txt | 1242 -------------------------------
tbb-2019-attributes.patch | 31 +
tbb-2019-dont-snip-Wall.patch | 43 ++
tbb-2019-fetchadd4.patch | 12 +
tbb-2019-test-task-scheduler-init.patch | 12 +
tbb-2019-test-thread-monitor.patch | 47 ++
tbb-3.0-cxxflags.patch | 18 -
tbb-4.0-mfence.patch | 21 -
tbb.pc | 5 -
tbb.spec | 365 ++++-----
tbbmalloc.pc | 5 -
tbbmalloc_proxy.pc | 5 -
14 files changed, 289 insertions(+), 1531 deletions(-)
delete mode 100644 .gitignore
delete mode 100644 CHANGES.txt
create mode 100644 tbb-2019-attributes.patch
create mode 100644 tbb-2019-dont-snip-Wall.patch
create mode 100644 tbb-2019-fetchadd4.patch
create mode 100644 tbb-2019-test-task-scheduler-init.patch
create mode 100644 tbb-2019-test-thread-monitor.patch
delete mode 100644 tbb-3.0-cxxflags.patch
delete mode 100644 tbb-4.0-mfence.patch
delete mode 100644 tbb.pc
delete mode 100644 tbbmalloc.pc
delete mode 100644 tbbmalloc_proxy.pc
diff --git a/.abf.yml b/.abf.yml
index 836681a..19c9d59 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,2 +1,2 @@
sources:
- tbb42_20140122oss_src.tgz: d897a6ced4f425c6608422a2e19218898e727260
+ tbb-2020.1.tar.gz: 493a1faf80a7ab320448eec0fbfaedf40e9574ee
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 1f23f1e..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,12 +0,0 @@
-tbb22_20090809oss_src.tgz
-Tutorial.pdf
-Reference.pdf
-Getting_Started.pdf
-/tbb30_20110419oss_src.tgz
-/Design_Patterns.pdf
-tbb*/
-/tbb40_20110809oss_src.tgz
-/tbb40_20120408oss_src.tgz
-*.rpm
-/tbb41_20130314oss_src.tgz
-.*.log
diff --git a/CHANGES.txt b/CHANGES.txt
deleted file mode 100644
index e96d77b..0000000
--- a/CHANGES.txt
+++ /dev/null
@@ -1,1242 +0,0 @@
-TBB 4.0 Update 4
-
-Changes (w.r.t. TBB 4.0 Update 3):
-
-- The TBB memory allocator transparently supports large pages on Linux.
-- A new flow_graph example, logic_sim, was added.
-- Support for DirectX* 9 was added to GUI examples.
-
-Community Preview Features:
-
-- Added: aggregator, a new concurrency control mechanism.
-
-Bugs fixed:
-
-- The abort operation on concurrent_bounded_queue now leaves the queue
- in a reusable state. If a bad_alloc or bad_last_alloc exception is
- thrown while the queue is recovering from an abort, that exception
- will be reported instead of user_abort on the thread on which it
- occurred, and the queue will not be reusable.
-- Steal limiting heuristic fixed to avoid premature stealing disabling
- when large amount of __thread data is allocated on thread stack.
-- Fixed a low-probability leak of arenas in the task scheduler.
-- In STL-compatible allocator classes, the method construct() was fixed
- to comply with C++11 requirements.
-- Fixed a bug that prevented creation of fixed-size memory pools
- smaller than 2M.
-- Significantly reduced the amount of warnings from various compilers.
-
-Open-source contributions integrated:
-
-- Multiple improvements by Raf Schietekat.
-- Basic support for Clang on Mac OS X* by Blas Rodriguez Somoza.
-- Fixes for warnings and corner-case bugs by Blas Rodriguez Somoza
- and Edward Lam.
-
-------------------------------------------------------------------------
-TBB 4.0 Update 3
-
-Changes (w.r.t. TBB 4.0 Update 2):
-
-- Modifications to the low-level API for memory pools:
- added support for aligned allocations;
- pool policies reworked to allow backward-compatible extensions;
- added a policy to not return memory space till destruction;
- pool_reset() does not return memory space anymore.
-- Class tbb::flow::graph_iterator added to iterate over all nodes
- registered with a graph instance.
-- multioutput_function_node has been renamed multifunction_node.
- multifunction_node and split_node are now fully-supported features.
-- For the tagged join node, the policy for try_put of an item with
- already existing tag has been defined: the item will be rejected.
-- Matching the behavior on Windows, on other platforms the optional
- shared libraries (libtbbmalloc, libirml) now are also searched
- only in the directory where libtbb is located.
-- The platform isolation layer based on GCC built-ins is extended.
-
-Backward-incompatible API changes:
-
-- a graph reference parameter is now required to be passed to the
- constructors of the following flow graph nodes: overwrite_node,
- write_once_node, broadcast_node, and the CPF or_node.
-- the following tbb::flow node methods and typedefs have been renamed:
- Old New
- join_node and or_node:
- inputs() -> input_ports()
- input_ports_tuple_type -> input_ports_type
- multifunction_node and split_node:
- ports_type -> output_ports_type
-
-Bugs fixed:
-
-- Not all logical processors were utilized on systems with more than
- 64 cores split by Windows into several processor groups.
-
-------------------------------------------------------------------------
-TBB 4.0 Update 2 commercial-aligned release
-
-Changes (w.r.t. TBB 4.0 Update 1 commercial-aligned release):
-
-- concurrent_bounded_queue now has an abort() operation that releases
- threads involved in pending push or pop operations. The released
- threads will receive a tbb::user_abort exception.
-- Added Community Preview Feature: concurrent_lru_cache container,
- a concurrent implementation of LRU (least-recently-used) cache.
-
-Bugs fixed:
-
-- fixed a race condition in the TBB scalable allocator.
-- concurrent_queue counter wraparound bug was fixed, which occurred when
- the number of push and pop operations exceeded ~>4 billion on IA32.
-- fixed races in the TBB scheduler that could put workers asleep too
- early, especially in presense of affinitized tasks.
-
-------------------------------------------------------------------------
-TBB 4.0 Update 1 commercial-aligned release
-
-Changes (w.r.t. TBB 4.0 commercial-aligned release):
-
-- Memory leaks fixed in binpack example.
-- Improvements and fixes in the TBB allocator.
-
-------------------------------------------------------------------------
-TBB 4.0 commercial-aligned release
-
-Changes (w.r.t. TBB 3.0 Update 8 commercial-aligned release):
-
-- concurrent_priority_queue is now a fully supported feature.
- Capacity control methods were removed.
-- Flow graph is now a fully supported feature.
-- A new memory backend has been implemented in the TBB allocator.
- It can reuse freed memory for both small and large objects, and
- returns unused memory blocks to the OS more actively.
-- Improved partitioning algorithms for parallel_for and parallel_reduce
- to better handle load imbalance.
-- The convex_hull example has been refactored for reproducible
- performance results.
-- The major interface version has changed from 5 to 6.
- Deprecated interfaces might be removed in future releases.
-
-Community Preview Features:
-
-- Added: serial subset, i.e. sequential implementations of TBB generic
- algorithms (currently, only provided for parallel_for).
-- Preview of new flow graph nodes:
- or_node (accepts multiple inputs, forwards each input separately
- to all successors),
- split_node (accepts tuples, and forwards each element of a tuple
- to a corresponding successor), and
- multioutput_function_node (accepts one input, and passes the input
- and a tuple of output ports to the function body to support outputs
- to multiple successors).
-- Added: memory pools for more control on memory source, grouping,
- and collective deallocation.
-
-------------------------------------------------------------------------
-TBB 3.0 Update 8 commercial-aligned release
-
-Changes (w.r.t. TBB 3.0 Update 7 commercial-aligned release):
-
-- Task priorities become an official feature of TBB,
- not community preview as before.
-- Atomics API extended, and implementation refactored.
-- Added task::set_parent() method.
-- Added concurrent_unordered_set container.
-
-Open-source contributions integrated:
-
-- PowerPC support by Raf Schietekat.
-- Fix of potential task pool overrun and other improvements
- in the task scheduler by Raf Schietekat.
-- Fix in parallel_for_each to work with std::set in Visual* C++ 2010.
-
-Community Preview Features:
-
-- Graph community preview feature was renamed to flow graph.
- Multiple improvements in the implementation.
- Binpack example was added for the feature.
-- A number of improvements to concurrent_priority_queue.
- Shortpath example was added for the feature.
-- TBB runtime loaded functionality was added (Windows*-only).
- It allows to specify which versions of TBB should be used,
- as well as to set directories for the library search.
-- parallel_deterministic_reduce template function was added.
-
-------------------------------------------------------------------------
-TBB 3.0 Update 7 commercial-aligned release
-
-Changes (w.r.t. TBB 3.0 Update 6 commercial-aligned release):
-
-- Added implementation of the platform isolation layer based on
- GCC atomic built-ins; it is supposed to work on any platform
- where GCC has these built-ins.
-
-Community Preview Features:
-
-- Graph's dining_philosophers example added.
-- A number of improvements to graph and concurrent_priority_queue.
-
-
-------------------------------------------------------------------------
-TBB 3.0 Update 6 commercial-aligned release
-
-Changes (w.r.t. TBB 3.0 Update 5 commercial-aligned release):
-
-- Added Community Preview feature: task and task group priority, and
- Fractal example demonstrating it.
-- parallel_pipeline optimized for data items of small and large sizes.
-- Graph's join_node is now parametrized with a tuple of up to 10 types.
-- Improved performance of concurrent_priority_queue.
-
-Open-source contributions integrated:
-
-- Initial NetBSD support by Aleksej Saushev.
-
-Bugs fixed:
-
-- Failure to enable interoperability with Intel(R) Cilk(tm) Plus runtime
- library, and a crash caused by invoking the interoperability layer
- after one of the libraries was unloaded.
-- Data race that could result in concurrent_unordered_map structure
- corruption after call to clear() method.
-- Stack corruption caused by PIC version of 64-bit CAS compiled by Intel
- compiler on Linux.
-- Inconsistency of exception propagation mode possible when application
- built with Microsoft* Visual Studio* 2008 or earlier uses TBB built
- with Microsoft* Visual Studio* 2010.
-- Affinitizing master thread to a subset of available CPUs after TBB
- scheduler was initialized tied all worker threads to the same CPUs.
-- Method is_stolen_task() always returned 'false' for affinitized tasks.
-- write_once_node and overwrite_node did not immediately send buffered
- items to successors
-
-------------------------------------------------------------------------
-TBB 3.0 Update 5 commercial-aligned release
-
-Changes (w.r.t. TBB 3.0 Update 4 commercial-aligned release):
-
-- Added Community Preview feature: graph.
-- Added automatic propagation of master thread FPU settings to
- TBB worker threads.
-- Added a public function to perform a sequentially consistent full
- memory fence: tbb::atomic_fence() in tbb/atomic.h.
-
-Bugs fixed:
-
-- Data race that could result in scheduler data structures corruption
- when using fire-and-forget tasks.
-- Potential referencing of destroyed concurrent_hash_map element after
- using erase(accessor&A) method with A acquired as const_accessor.
-- Fixed a correctness bug in the convex hull example.
-
-Open-source contributions integrated:
-
-- Patch for calls to internal::atomic_do_once() by Andrey Semashev.
-
-------------------------------------------------------------------------
-TBB 3.0 Update 4 commercial-aligned release
-
-Changes (w.r.t. TBB 3.0 Update 3 commercial-aligned release):
-
-- Added Community Preview feature: concurrent_priority_queue.
-- Fixed library loading to avoid possibility for remote code execution,
- see http://www.microsoft.com/technet/security/advisory/2269637.mspx.
-- Added support of more than 64 cores for appropriate Microsoft*
- Windows* versions. For more details, see
- http://msdn.microsoft.com/en-us/library/dd405503.aspx.
-- Default number of worker threads is adjusted in accordance with
- process affinity mask.
-
-Bugs fixed:
-
-- Calls of scalable_* functions from inside the allocator library
- caused issues if the functions were overridden by another module.
-- A crash occurred if methods run() and wait() were called concurrently
- for an empty tbb::task_group (1736).
-- The tachyon example exhibited build problems associated with
- bug 554339 on Microsoft* Visual Studio* 2010. Project files were
- modified as a partial workaround to overcome the problem. See
- http://connect.microsoft.com/VisualStudio/feedback/details/554339.
-
-------------------------------------------------------------------------
-TBB 3.0 Update 3 commercial-aligned release
-
-Changes (w.r.t. TBB 3.0 Update 2 commercial-aligned release):
-
-- cache_aligned_allocator class reworked to use scalable_aligned_malloc.
-- Improved performance of count() and equal_range() methods
- in concurrent_unordered_map.
-- Improved implementation of 64-bit atomic loads and stores on 32-bit
- platforms, including compilation with VC 7.1.
-- Added implementation of atomic operations on top of OSAtomic API
- provided by Mac OS* X.
-- Removed gratuitous try/catch blocks surrounding thread function calls
- in tbb_thread.
-- Xcode* projects were added for sudoku and game_of_life examples.
-- Xcode* projects were updated to work without TBB framework.
-
-Bugs fixed:
-
-- Fixed a data race in task scheduler destruction that on rare occasion
- could result in memory corruption.
-- Fixed idle spinning in thread bound filters in tbb::pipeline (1670).
-
-Open-source contributions integrated:
-
-- MinGW-64 basic support by brsomoza (partially).
-- Patch for atomic.h by Andrey Semashev.
-- Support for AIX & GCC on PowerPC by Giannis Papadopoulos.
-- Various improvements by Raf Schietekat.
-
-------------------------------------------------------------------------
-TBB 3.0 Update 2 commercial-aligned release
-
-Changes (w.r.t. TBB 3.0 Update 1 commercial-aligned release):
-
-- Destructor of tbb::task_group class throws missing_wait exception
- if there are tasks running when it is invoked.
-- Interoperability layer with Intel Cilk Plus runtime library added
- to protect TBB TLS in case of nested usage with Intel Cilk Plus.
-- Compilation fix for dependent template names in concurrent_queue.
-- Memory allocator code refactored to ease development and maintenance.
-
-Bugs fixed:
-
-- Improved interoperability with other Intel software tools on Linux in
- case of dynamic replacement of memory allocator (1700)
-- Fixed install issues that prevented installation on
- Mac OS* X 10.6.4 (1711).
-
-------------------------------------------------------------------------
-TBB 3.0 Update 1 commercial-aligned release
-
-Changes (w.r.t. TBB 3.0 commercial-aligned release):
-
-- Decreased memory fragmentation by allocations bigger than 8K.
-- Lazily allocate worker threads, to avoid creating unnecessary stacks.
-
-Bugs fixed:
-
-- TBB allocator used much more memory than malloc (1703) - see above.
-- Deadlocks happened in some specific initialization scenarios
- of the TBB allocator (1701, 1704).
-- Regression in enumerable_thread_specific: excessive requirements
- for object constructors.
-- A bug in construction of parallel_pipeline filters when body instance
- was a temporary object.
-- Incorrect usage of memory fences on PowerPC and XBOX360 platforms.
-- A subtle issue in task group context binding that could result
- in cancelation signal being missed by nested task groups.
-- Incorrect construction of concurrent_unordered_map if specified
- number of buckets is not power of two.
-- Broken count() and equal_range() of concurrent_unordered_map.
-- Return type of postfix form of operator++ for hash map's iterators.
-
-------------------------------------------------------------------------
-TBB 3.0 commercial-aligned release
-
-Changes (w.r.t. TBB 2.2 Update 3 commercial-aligned release):
-
-- All open-source-release changes down to TBB 2.2 U3 below
- were incorporated into this release.
-
-------------------------------------------------------------------------
-20100406 open-source release
-
-Changes (w.r.t. 20100310 open-source release):
-
-- Added support for Microsoft* Visual Studio* 2010, including binaries.
-- Added a PDF file with recommended Design Patterns for TBB.
-- Added parallel_pipeline function and companion classes and functions
- that provide a strongly typed lambda-friendly pipeline interface.
-- Reworked enumerable_thread_specific to use a custom implementation of
- hash map that is more efficient for ETS usage models.
-- Added example for class task_group; see examples/task_group/sudoku.
-- Removed two examples, as they were long outdated and superceded:
- pipeline/text_filter (use pipeline/square);
- parallel_while/parallel_preorder (use parallel_do/parallel_preorder).
-- PDF documentation updated.
-- Other fixes and changes in code, tests, and examples.
-
-Bugs fixed:
-
-- Eliminated build errors with MinGW32.
-- Fixed post-build step and other issues in VS projects for examples.
-- Fixed discrepancy between scalable_realloc and scalable_msize that
- caused crashes with malloc replacement on Windows.
-
-------------------------------------------------------------------------
-20100310 open-source release
-
-Changes (w.r.t. TBB 2.2 Update 3 commercial-aligned release):
-
-- Version macros changed in anticipation of a future release.
-- Directory structure aligned with Intel(R) C++ Compiler;
- now TBB binaries reside in <arch>/<os_key>/[bin|lib]
- (in TBB 2.x, it was [bin|lib]/<arch>/<os_key>).
-- Visual Studio projects changed for examples: instead of separate set
- of files for each VS version, now there is single 'msvs' directory
- that contains workspaces for MS C++ compiler (<example>_cl.sln) and
- Intel C++ compiler (<example>_icl.sln). Works with VS 2005 and above.
-- The name versioning scheme for backward compatibility was improved;
- now compatibility-breaking changes are done in a separate namespace.
-- Added concurrent_unordered_map implementation based on a prototype
- developed in Microsoft for a future version of PPL.
-- Added PPL-compatible writer-preference RW lock (reader_writer_lock).
-- Added TBB_IMPLEMENT_CPP0X macro to control injection of C++0x names
- implemented in TBB into namespace std.
-- Added almost-C++0x-compatible std::condition_variable, plus a bunch
- of other C++0x classes required by condition_variable.
-- With TBB_IMPLEMENT_CPP0X, tbb_thread can be also used as std::thread.
-- task.cpp was split into several translation units to structure
- TBB scheduler sources layout. Static data layout and library
- initialization logic were also updated.
-- TBB scheduler reworked to prevent master threads from stealing
- work belonging to other masters.
-- Class task was extended with enqueue() method, and slightly changed
- semantics of methods spawn() and destroy(). For exact semantics,
- refer to TBB Reference manual.
-- task_group_context now allows for destruction by non-owner threads.
-- Added TBB_USE_EXCEPTIONS macro to control use of exceptions in TBB
- headers. It turns off (i.e. sets to 0) automatically if specified
- compiler options disable exception handling.
-- TBB is enabled to run on top of Microsoft's Concurrency Runtime
- on Windows* 7 (via our worker dispatcher known as RML).
-- Removed old unused busy-waiting code in concurrent_queue.
-- Described the advanced build & test options in src/index.html.
-- Warning level for GCC raised with -Wextra and a few other options.
-- Multiple fixes and improvements in code, tests, examples, and docs.
-
-Open-source contributions integrated:
-
-- Xbox support by Roman Lut (Deep Shadows), though further changes are
- required to make it working; e.g. post-2.1 entry points are missing.
-- "Eventcount" by Dmitry Vyukov evolved into concurrent_monitor,
- an internal class used in the implementation of concurrent_queue.
-
-------------------------------------------------------------------------
-TBB 2.2 Update 3 commercial-aligned release
-
-Changes (w.r.t. TBB 2.2 Update 2 commercial-aligned release):
-
-- PDF documentation updated.
-
-Bugs fixed:
-
-- concurrent_hash_map compatibility issue exposed on Linux in case
- two versions of the container were used by different modules.
-- enforce 16 byte stack alignment for consistence with GCC; required
- to work correctly with 128-bit variables processed by SSE.
-- construct() methods of allocator classes now use global operator new.
-
-------------------------------------------------------------------------
-TBB 2.2 Update 2 commercial-aligned release
-
-Changes (w.r.t. TBB 2.2 Update 1 commercial-aligned release):
-
-- parallel_invoke and parallel_for_each now take function objects
- by const reference, not by value.
-- Building TBB with /MT is supported, to avoid dependency on particular
- versions of Visual C++* runtime DLLs. TBB DLLs built with /MT
- are located in vc_mt directory.
-- Class critical_section introduced.
-- Improvements in exception support: new exception classes introduced,
- all exceptions are thrown via an out-of-line internal method.
-- Improvements and fixes in the TBB allocator and malloc replacement,
- including robust memory identification, and more reliable dynamic
- function substitution on Windows*.
-- Method swap() added to class tbb_thread.
-- Methods rehash() and bucket_count() added to concurrent_hash_map.
-- Added support for Visual Studio* 2010 Beta2. No special binaries
- provided, but CRT-independent DLLs (vc_mt) should work.
-- Other fixes and improvements in code, tests, examples, and docs.
-
-Open-source contributions integrated:
-
-- The fix to build 32-bit TBB on Mac OS* X 10.6.
-- GCC-based port for SPARC Solaris by Michailo Matijkiw, with use of
- earlier work by Raf Schietekat.
-
-Bugs fixed:
-
-- 159 - TBB build for PowerPC* running Mac OS* X.
-- 160 - IBM* Java segfault if used with TBB allocator.
-- crash in concurrent_queue<char> (1616).
-
-------------------------------------------------------------------------
-TBB 2.2 Update 1 commercial-aligned release
-
-Changes (w.r.t. TBB 2.2 commercial-aligned release):
-
-- Incorporates all changes from open-source releases below.
-- Documentation was updated.
-- TBB scheduler auto-initialization now covers all possible use cases.
-- concurrent_queue: made argument types of sizeof used in paddings
- consistent with those actually used.
-- Memory allocator was improved: supported corner case of user's malloc
- calling scalable_malloc (non-Windows), corrected processing of
- memory allocation requests during tbb memory allocator startup
- (Linux).
-- Windows malloc replacement has got better support for static objects.
-- In pipeline setups that do not allow actual parallelism, execution
- by a single thread is guaranteed, idle spinning eliminated, and
- performance improved.
-- RML refactoring and clean-up.
-- New constructor for concurrent_hash_map allows reserving space for
- a number of items.
-- Operator delete() added to the TBB exception classes.
-- Lambda support was improved in parallel_reduce.
-- gcc 4.3 warnings were fixed for concurrent_queue.
-- Fixed possible initialization deadlock in modules using TBB entities
- during construction of global static objects.
-- Copy constructor in concurrent_hash_map was fixed.
-- Fixed a couple of rare crashes in the scheduler possible before
- in very specific use cases.
-- Fixed a rare crash in the TBB allocator running out of memory.
-- New tests were implemented, including test_lambda.cpp that checks
- support for lambda expressions.
-- A few other small changes in code, tests, and documentation.
-
-------------------------------------------------------------------------
-20090809 open-source release
-
-Changes (w.r.t. TBB 2.2 commercial-aligned release):
-
-- Fixed known exception safety issues in concurrent_vector.
-- Better concurrency of simultaneous grow requests in concurrent_vector.
-- TBB allocator further improves performance of large object allocation.
-- Problem with source of text relocations was fixed on Linux
-- Fixed bugs related to malloc replacement under Windows
-- A few other small changes in code and documentation.
-
-------------------------------------------------------------------------
-TBB 2.2 commercial-aligned release
-
-Changes (w.r.t. TBB 2.1 U4 commercial-aligned release):
-
-- Incorporates all changes from open-source releases below.
-- Architecture folders renamed from em64t to intel64 and from itanium
- to ia64.
-- Major Interface version changed from 3 to 4. Deprecated interfaces
- might be removed in future releases.
-- Parallel algorithms that use partitioners have switched to use
- the auto_partitioner by default.
-- Improved memory allocator performance for allocations bigger than 8K.
-- Added new thread-bound filters functionality for pipeline.
-- New implementation of concurrent_hash_map that improves performance
- significantly.
-- A few other small changes in code and documentation.
-
-------------------------------------------------------------------------
-20090511 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Basic support for MinGW32 development kit.
-- Added tbb::zero_allocator class that initializes memory with zeros.
- It can be used as an adaptor to any STL-compatible allocator class.
-- Added tbb::parallel_for_each template function as alias to parallel_do.
-- Added more overloads for tbb::parallel_for.
-- Added support for exact exception propagation (can only be used with
- compilers that support C++0x std::exception_ptr).
-- tbb::atomic template class can be used with enumerations.
-- mutex, recursive_mutex, spin_mutex, spin_rw_mutex classes extended
- with explicit lock/unlock methods.
-- Fixed size() and grow_to_at_least() methods of tbb::concurrent_vector
- to provide space allocation guarantees. More methods added for
- compatibility with std::vector, including some from C++0x.
-- Preview of a lambda-friendly interface for low-level use of tasks.
-- scalable_msize function added to the scalable allocator (Windows only).
-- Rationalized internal auxiliary functions for spin-waiting and backoff.
-- Several tests undergo decent refactoring.
-
-Changes affecting backward compatibility:
-
-- Improvements in concurrent_queue, including limited API changes.
- The previous version is deprecated; its functionality is accessible
- via methods of the new tbb::concurrent_bounded_queue class.
-- grow* and push_back methods of concurrent_vector changed to return
- iterators; old semantics is deprecated.
-
-------------------------------------------------------------------------
-TBB 2.1 Update 4 commercial-aligned release
-
-Changes (w.r.t. TBB 2.1 U3 commercial-aligned release):
-
-- Added tests for aligned memory allocations and malloc replacement.
-- Several improvements for better bundling with Intel(R) C++ Compiler.
-- A few other small changes in code and documentaion.
-
-Bugs fixed:
-
-- 150 - request to build TBB examples with debug info in release mode.
-- backward compatibility issue with concurrent_queue on Windows.
-- dependency on VS 2005 SP1 runtime libraries removed.
-- compilation of GUI examples under Xcode* 3.1 (1577).
-- On Windows, TBB allocator classes can be instantiated with const types
- for compatibility with MS implementation of STL containers (1566).
-
-------------------------------------------------------------------------
-20090313 open-source release
-
-Changes (w.r.t. 20081109 open-source release):
-
-- Includes all changes introduced in TBB 2.1 Update 2 & Update 3
- commercial-aligned releases (see below for details).
-- Added tbb::parallel_invoke template function. It runs up to 10
- user-defined functions in parallel and waits for them to complete.
-- Added a special library providing ability to replace the standard
- memory allocation routines in Microsoft* C/C++ RTL (malloc/free,
- global new/delete, etc.) with the TBB memory allocator.
- Usage details are described in include/tbb/tbbmalloc_proxy.h file.
-- Task scheduler switched to use new implementation of its core
- functionality (deque based task pool, new structure of arena slots).
-- Preview of Microsoft* Visual Studio* 2005 project files for
- building the library is available in build/vsproject folder.
-- Added tests for aligned memory allocations and malloc replacement.
-- Added parallel_for/game_of_life.net example (for Windows only)
- showing TBB usage in a .NET application.
-- A number of other fixes and improvements to code, tests, makefiles,
- examples and documents.
-
-Bugs fixed:
-
-- The same list as in TBB 2.1 Update 4 right above.
-
-------------------------------------------------------------------------
-TBB 2.1 Update 3 commercial-aligned release
-
-Changes (w.r.t. TBB 2.1 U2 commercial-aligned release):
-
-- Added support for aligned allocations to the TBB memory allocator.
-- Added a special library to use with LD_PRELOAD on Linux* in order to
- replace the standard memory allocation routines in C/C++ with the
- TBB memory allocator.
-- Added null_mutex and null_rw_mutex: no-op classes interface-compliant
- to other TBB mutexes.
-- Improved performance of parallel_sort, to close most of the serial gap
- with std::sort, and beat it on 2 and more cores.
-- A few other small changes.
-
-Bugs fixed:
-
-- the problem where parallel_for hanged after exception throw
- if affinity_partitioner was used (1556).
-- get rid of VS warnings about mbstowcs deprecation (1560),
- as well as some other warnings.
-- operator== for concurrent_vector::iterator fixed to work correctly
- with different vector instances.
-
-------------------------------------------------------------------------
-TBB 2.1 Update 2 commercial-aligned release
-
-Changes (w.r.t. TBB 2.1 U1 commercial-aligned release):
-
-- Incorporates all open-source-release changes down to TBB 2.1 U1,
- except for:
- - 20081019 addition of enumerable_thread_specific;
-- Warning level for Microsoft* Visual C++* compiler raised to /W4 /Wp64;
- warnings found on this level were cleaned or suppressed.
-- Added TBB_runtime_interface_version API function.
-- Added new example: pipeline/square.
-- Added exception handling and cancellation support
- for parallel_do and pipeline.
-- Added copy constructor and [begin,end) constructor to concurrent_queue.
-- Added some support for beta version of Intel(R) Parallel Amplifier.
-- Added scripts to set environment for cross-compilation of 32-bit
- applications on 64-bit Linux with Intel(R) C++ Compiler.
-- Fixed semantics of concurrent_vector::clear() to not deallocate
- internal arrays. Fixed compact() to perform such deallocation later.
-- Fixed the issue with atomic<T*> when T is incomplete type.
-- Improved support for PowerPC* Macintosh*, including the fix
- for a bug in masked compare-and-swap reported by a customer.
-- As usual, a number of other improvements everywhere.
-
-------------------------------------------------------------------------
-20081109 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Added new serial out of order filter for tbb::pipeline.
-- Fixed the issue with atomic<T*>::operator= reported at the forum.
-- Fixed the issue with using tbb::task::self() in task destructor
- reported at the forum.
-- A number of other improvements to code, tests, makefiles, examples
- and documents.
-
-Open-source contributions integrated:
-- Changes in the memory allocator were partially integrated.
-
-------------------------------------------------------------------------
-20081019 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Introduced enumerable_thread_specific<T>. This new class provides a
- wrapper around native thread local storage as well as iterators and
- ranges for accessing the thread local copies (1533).
-- Improved support for Intel(R) Threading Analysis Tools
- on Intel(R) 64 architecture.
-- Dependency from Microsoft* CRT was integrated to the libraries using
- manifests, to avoid issues if called from code that uses different
- version of Visual C++* runtime than the library.
-- Introduced new defines TBB_USE_ASSERT, TBB_USE_DEBUG,
- TBB_USE_PERFORMANCE_WARNINGS, TBB_USE_THREADING_TOOLS.
-- A number of other improvements to code, tests, makefiles, examples
- and documents.
-
-Open-source contributions integrated:
-
-- linker optimization: /incremental:no .
-
-------------------------------------------------------------------------
-20080925 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Same fix for a memory leak in the memory allocator as in TBB 2.1 U1.
-- Improved support for lambda functions.
-- Fixed more concurrent_queue issues reported at the forum.
-- A number of other improvements to code, tests, makefiles, examples
- and documents.
-
-------------------------------------------------------------------------
-TBB 2.1 Update 1 commercial-aligned release
-
-Changes (w.r.t. TBB 2.1 commercial-aligned release):
-
-- Fixed small memory leak in the memory allocator.
-- Incorporates all open-source-release changes since TBB 2.1, except for:
- - 20080825 changes for parallel_do;
-
-------------------------------------------------------------------------
-20080825 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Added exception handling and cancellation support for parallel_do.
-- Added default HashCompare template argument for concurrent_hash_map.
-- Fixed concurrent_queue.clear() issues due to incorrect assumption
- about clear() being private method.
-- Added the possibility to use TBB in applications that change
- default calling conventions (Windows* only).
-- Many improvements to code, tests, examples, makefiles and documents.
-
-Bugs fixed:
-
-- 120, 130 - memset declaration missed in concurrent_hash_map.h
-
-------------------------------------------------------------------------
-20080724 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Inline assembly for atomic operations improved for gcc 4.3
-- A few more improvements to the code.
-
-------------------------------------------------------------------------
-20080709 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- operator=() was added to the tbb_thread class according to
- the current working draft for std::thread.
-- Recognizing SPARC* in makefiles for Linux* and Sun Solaris*.
-
-Bugs fixed:
-
-- 127 - concurrent_hash_map::range fixed to split correctly.
-
-Open-source contributions integrated:
-
-- fix_set_midpoint.diff by jyasskin
-- SPARC* support in makefiles by Raf Schietekat
-
-------------------------------------------------------------------------
-20080622 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Fixed a hang that rarely happened on Linux
- during deinitialization of the TBB scheduler.
-- Improved support for Intel(R) Thread Checker.
-- A few more improvements to the code.
-
-------------------------------------------------------------------------
-TBB 2.1 commercial-aligned release
-
-Changes (w.r.t. TBB 2.0 U3 commercial-aligned release):
-
-- All open-source-release changes down to, and including, TBB 2.0 below,
- were incorporated into this release.
-
-------------------------------------------------------------------------
-20080605 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Explicit control of exported symbols by version scripts added on Linux.
-- Interfaces polished for exception handling & algorithm cancellation.
-- Cache behavior improvements in the scalable allocator.
-- Improvements in text_filter, polygon_overlay, and other examples.
-- A lot of other stability improvements in code, tests, and makefiles.
-- First release where binary packages include headers/docs/examples, so
- binary packages are now self-sufficient for using TBB.
-
-Open-source contributions integrated:
-
-- atomics patch (partially).
-- tick_count warning patch.
-
-Bugs fixed:
-
-- 118 - fix for boost compatibility.
-- 123 - fix for tbb_machine.h.
-
-------------------------------------------------------------------------
-20080512 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Fixed a problem with backward binary compatibility
- of debug Linux builds.
-- Sun* Studio* support added.
-- soname support added on Linux via linker script. To restore backward
- binary compatibility, *.so -> *.so.2 softlinks should be created.
-- concurrent_hash_map improvements - added few new forms of insert()
- method and fixed precondition and guarantees of erase() methods.
- Added runtime warning reporting about bad hash function used for
- the container. Various improvements for performance and concurrency.
-- Cancellation mechanism reworked so that it does not hurt scalability.
-- Algorithm parallel_do reworked. Requirement for Body::argument_type
- definition removed, and work item argument type can be arbitrarily
- cv-qualified.
-- polygon_overlay example added.
-- A few more improvements to code, tests, examples and Makefiles.
-
-Open-source contributions integrated:
-
-- Soname support patch for Bugzilla #112.
-
-Bugs fixed:
-
-- 112 - fix for soname support.
-
-------------------------------------------------------------------------
-TBB 2.0 U3 commercial-aligned release (package 017, April 20, 2008)
-
-Corresponds to commercial 019 (for Linux*, 020; for Mac OS* X, 018)
-packages.
-
-Changes (w.r.t. TBB 2.0 U2 commercial-aligned release):
-
-- Does not contain open-source-release changes below; this release is
- only a minor update of TBB 2.0 U2.
-- Removed spin-waiting in pipeline and concurrent_queue.
-- A few more small bug fixes from open-source releases below.
-
-------------------------------------------------------------------------
-20080408 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- count_strings example reworked: new word generator implemented, hash
- function replaced, and tbb_allocator is used with std::string class.
-- Static methods of spin_rw_mutex were replaced by normal member
- functions, and the class name was versioned.
-- tacheon example was renamed to tachyon.
-- Improved support for Intel(R) Thread Checker.
-- A few more minor improvements.
-
-Open-source contributions integrated:
-
-- Two sets of Sun patches for IA Solaris support.
-
-------------------------------------------------------------------------
-20080402 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Exception handling and cancellation support for tasks and algorithms
- fully enabled.
-- Exception safety guaranties defined and fixed for all concurrent
- containers.
-- User-defined memory allocator support added to all concurrent
- containers.
-- Performance improvement of concurrent_hash_map, spin_rw_mutex.
-- Critical fix for a rare race condition during scheduler
- initialization/de-initialization.
-- New methods added for concurrent containers to be closer to STL,
- as well as automatic filters removal from pipeline
- and __TBB_AtomicAND function.
-- The volatile keyword dropped from where it is not really needed.
-- A few more minor improvements.
-
-------------------------------------------------------------------------
-20080319 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Support for gcc version 4.3 was added.
-- tbb_thread class, near compatible with std::thread expected in C++0x,
- was added.
-
-Bugs fixed:
-
-- 116 - fix for compilation issues with gcc version 4.2.1.
-- 120 - fix for compilation issues with gcc version 4.3.
-
-------------------------------------------------------------------------
-20080311 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- An enumerator added for pipeline filter types (serial vs. parallel).
-- New task_scheduler_observer class introduced, to observe when
- threads start and finish interacting with the TBB task scheduler.
-- task_scheduler_init reverted to not use internal versioned class;
- binary compatibility guaranteed with stable releases only.
-- Various improvements to code, tests, examples and Makefiles.
-
-------------------------------------------------------------------------
-20080304 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Task-to-thread affinity support, previously kept under a macro,
- now fully legalized.
-- Work-in-progress on cache_aligned_allocator improvements.
-- Pipeline really supports parallel input stage; it's no more serialized.
-- Various improvements to code, tests, examples and Makefiles.
-
-Bugs fixed:
-
-- 119 - fix for scalable_malloc sometimes failing to return a big block.
-- TR575 - fixed a deadlock occurring on Windows in startup/shutdown
- under some conditions.
-
-------------------------------------------------------------------------
-20080226 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Introduced tbb_allocator to select between standard allocator and
- tbb::scalable_allocator when available.
-- Removed spin-waiting in pipeline and concurrent_queue.
-- Improved performance of concurrent_hash_map by using tbb_allocator.
-- Improved support for Intel(R) Thread Checker.
-- Various improvements to code, tests, examples and Makefiles.
-
-------------------------------------------------------------------------
-TBB 2.0 U2 commercial-aligned release (package 017, February 14, 2008)
-
-Corresponds to commercial 017 (for Linux*, 018; for Mac OS* X, 016)
-packages.
-
-Changes (w.r.t. TBB 2.0 U1 commercial-aligned release):
-
-- Does not contain open-source-release changes below; this release is
- only a minor update of TBB 2.0 U1.
-- Add support for Microsoft* Visual Studio* 2008, including binary
- libraries and VS2008 projects for examples.
-- Use SwitchToThread() not Sleep() to yield threads on Windows*.
-- Enhancements to Doxygen-readable comments in source code.
-- A few more small bug fixes from open-source releases below.
-
-Bugs fixed:
-
-- TR569 - Memory leak in concurrent_queue.
-
-------------------------------------------------------------------------
-20080207 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Improvements and minor fixes in VS2008 projects for examples.
-- Improvements in code for gating worker threads that wait for work,
- previously consolidated under #if IMPROVED_GATING, now legalized.
-- Cosmetic changes in code, examples, tests.
-
-Bugs fixed:
-
-- 113 - Iterators and ranges should be convertible to their const
- counterparts.
-- TR569 - Memory leak in concurrent_queue.
-
-------------------------------------------------------------------------
-20080122 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Updated examples/parallel_for/seismic to improve the visuals and to
- use the affinity_partitioner (20071127 and forward) for better
- performance.
-- Minor improvements to unittests and performance tests.
-
-------------------------------------------------------------------------
-20080115 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Cleanup, simplifications and enhancements to the Makefiles for
- building the libraries (see build/index.html for high-level
- changes) and the examples.
-- Use SwitchToThread() not Sleep() to yield threads on Windows*.
-- Engineering work-in-progress on exception safety/support.
-- Engineering work-in-progress on affinity_partitioner for
- parallel_reduce.
-- Engineering work-in-progress on improved gating for worker threads
- (idle workers now block in the OS instead of spinning).
-- Enhancements to Doxygen-readable comments in source code.
-
-Bugs fixed:
-
-- 102 - Support for parallel build with gmake -j
-- 114 - /Wp64 build warning on Windows*.
-
-------------------------------------------------------------------------
-20071218 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Full support for Microsoft* Visual Studio* 2008 in open-source.
- Binaries for vc9/ will be available in future stable releases.
-- New recursive_mutex class.
-- Full support for 32-bit PowerMac including export files for builds.
-- Improvements to parallel_do.
-
-------------------------------------------------------------------------
-20071206 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Support for Microsoft* Visual Studio* 2008 in building libraries
- from source as well as in vc9/ projects for examples.
-- Small fixes to the affinity_partitioner first introduced in 20071127.
-- Small fixes to the thread-stack size hook first introduced in 20071127.
-- Engineering work in progress on concurrent_vector.
-- Engineering work in progress on exception behavior.
-- Unittest improvements.
-
-------------------------------------------------------------------------
-20071127 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- Task-to-thread affinity support (affinity partitioner) first appears.
-- More work on concurrent_vector.
-- New parallel_do algorithm (function-style version of parallel while)
- and parallel_do/parallel_preorder example.
-- New task_scheduler_init() hooks for getting default_num_threads() and
- for setting thread stack size.
-- Support for weak memory consistency models in the code base.
-- Futex usage in the task scheduler (Linux).
-- Started adding 32-bit PowerMac support.
-- Intel(R) 9.1 compilers are now the base supported Intel(R) compiler
- version.
-- TBB libraries added to link line automatically on Microsoft Windows*
- systems via #pragma comment linker directives.
-
-Open-source contributions integrated:
-
-- FreeBSD platform support patches.
-- AIX weak memory model patch.
-
-Bugs fixed:
-
-- 108 - Removed broken affinity.h reference.
-- 101 - Does not build on Debian Lenny (replaced arch with uname -m).
-
-------------------------------------------------------------------------
-20071030 open-source release
-
-Changes (w.r.t. previous open-source release):
-
-- More work on concurrent_vector.
-- Better support for building with -Wall -Werror (or not) as desired.
-- A few fixes to eliminate extraneous warnings.
-- Begin introduction of versioning hooks so that the internal/API
- version is tracked via TBB_INTERFACE_VERSION. The newest binary
- libraries should always work with previously-compiled code when-
- ever possible.
-- Engineering work in progress on using futex inside the mutexes (Linux).
-- Engineering work in progress on exception behavior.
-- Engineering work in progress on a new parallel_do algorithm.
-- Unittest improvements.
-
-------------------------------------------------------------------------
-20070927 open-source release
-
-Changes (w.r.t. TBB 2.0 U1 commercial-aligned release):
-
-- Minor update to TBB 2.0 U1 below.
-- Begin introduction of new concurrent_vector interfaces not released
- with TBB 2.0 U1.
-
-------------------------------------------------------------------------
-TBB 2.0 U1 commercial-aligned release (package 014, October 1, 2007)
-
-Corresponds to commercial 014 (for Linux*, 016) packages.
-
-Changes (w.r.t. TBB 2.0 commercial-aligned release):
-
-- All open-source-release changes down to, and including, TBB 2.0 below,
- were incorporated into this release.
-- Made a number of changes to the officially supported OS list:
- Added Linux* OSs:
- Asianux* 3, Debian* 4.0, Fedora Core* 6, Fedora* 7,
- Turbo Linux* 11, Ubuntu* 7.04;
- Dropped Linux* OSs:
- Asianux* 2, Fedora Core* 4, Haansoft* Linux 2006 Server,
- Mandriva/Mandrake* 10.1, Miracle Linux* 4.0,
- Red Flag* DC Server 5.0;
- Only Mac OS* X 10.4.9 (and forward) and Xcode* tool suite 2.4.1 (and
- forward) are now supported.
-- Commercial installers on Linux* fixed to recommend the correct
- binaries to use in more cases, with less unnecessary warnings.
-- Changes to eliminate spurious build warnings.
-
-Open-source contributions integrated:
-
-- Two small header guard macro patches; it also fixed bug #94.
-- New blocked_range3d class.
-
-Bugs fixed:
-
-- 93 - Removed misleading comments in task.h.
-- 94 - See above.
-
-------------------------------------------------------------------------
-20070815 open-source release
-
-Changes:
-
-- Changes to eliminate spurious build warnings.
-- Engineering work in progress on concurrent_vector allocator behavior.
-- Added hooks to use the Intel(R) compiler code coverage tools.
-
-Open-source contributions integrated:
-
-- Mac OS* X build warning patch.
-
-Bugs fixed:
-
-- 88 - Fixed TBB compilation errors if both VS2005 and Windows SDK are
- installed.
-
-------------------------------------------------------------------------
-20070719 open-source release
-
-Changes:
-
-- Minor update to TBB 2.0 commercial-aligned release below.
-- Changes to eliminate spurious build warnings.
-
-------------------------------------------------------------------------
-TBB 2.0 commercial-aligned release (package 010, July 19, 2007)
-
-Corresponds to commercial 010 (for Linux*, 012) packages.
-
-- TBB open-source debut release.
-
-------------------------------------------------------------------------
-TBB 1.1 commercial release (April 10, 2007)
-
-Changes (w.r.t. TBB 1.0 commercial release):
-
-- auto_partitioner which offered an automatic alternative to specifying
- a grain size parameter to estimate the best granularity for tasks.
-- The release was added to the Intel(R) C++ Compiler 10.0 Pro.
-
-------------------------------------------------------------------------
-TBB 1.0 Update 2 commercial release
-
-Changes (w.r.t. TBB 1.0 Update 1 commercial release):
-
-- Mac OS* X 64-bit support added.
-- Source packages for commercial releases introduced.
-
-------------------------------------------------------------------------
-TBB 1.0 Update 1 commercial-aligned release
-
-Changes (w.r.t. TBB 1.0 commercial release):
-
-- Fix for critical package issue on Mac OS* X.
-
-------------------------------------------------------------------------
-TBB 1.0 commercial release (August 29, 2006)
-
-Changes (w.r.t. TBB 1.0 beta commercial release):
-
-- New namespace (and compatibility headers for old namespace).
- Namespaces are tbb and tbb::internal and all classes are in the
- underscore_style not the WindowsStyle.
-- New class: scalable_allocator (and cache_aligned_allocator using that
- if it exists).
-- Added parallel_for/tacheon example.
-- Removed C-style casts from headers for better C++ compliance.
-- Bug fixes.
-- Documentation improvements.
-- Improved performance of the concurrent_hash_map class.
-- Upgraded parallel_sort() to support STL-style random-access iterators
- instead of just pointers.
-- The Windows vs7_1 directories renamed to vs7.1 in examples.
-- New class: spin version of reader-writer lock.
-- Added push_back() interface to concurrent_vector().
-
-------------------------------------------------------------------------
-TBB 1.0 beta commercial release
-
-Initial release.
-
-Features / APIs:
-
-- Concurrent containers: ConcurrentHashTable, ConcurrentVector,
- ConcurrentQueue.
-- Parallel algorithms: ParallelFor, ParallelReduce, ParallelScan,
- ParallelWhile, Pipeline, ParallelSort.
-- Support: AlignedSpace, BlockedRange (i.e., 1D), BlockedRange2D
-- Task scheduler with multi-master support.
-- Atomics: read, write, fetch-and-store, fetch-and-add, compare-and-swap.
-- Locks: spin, reader-writer, queuing, OS-wrapper.
-- Memory allocation: STL-style memory allocator that avoids false
- sharing.
-- Timers.
-
-Tools Support:
-- Intel(R) Thread Checker 3.0.
-- Intel(R) Thread Profiler 3.0.
-
-Documentation:
-- First Use Documents: README.txt, INSTALL.txt, Release_Notes.txt,
- Doc_Index.html, Getting_Started.pdf, Tutorial.pdf, Reference.pdf.
-- Class hierarchy HTML pages (Doxygen).
-- Tree of index.html pages for navigating the installed package, esp.
- for the examples.
-
-Examples:
-- One for each of these TBB features: ConcurrentHashTable, ParallelFor,
- ParallelReduce, ParallelWhile, Pipeline, Task.
-- Live copies of examples from Getting_Started.pdf.
-- TestAll example that exercises every class and header in the package
- (i.e., a "liveness test").
-- Compilers: see Release_Notes.txt.
-- APIs: OpenMP, WinThreads, Pthreads.
-
-Packaging:
-- Package for Windows installs IA-32 and EM64T bits.
-- Package for Linux installs IA-32, EM64T and IPF bits.
-- Package for Mac OS* X installs IA-32 bits.
-- All packages support Intel(R) software setup assistant (ISSA) and
- install-time FLEXlm license checking.
-- ISSA support allows license file to be specified directly in case of
- no Internet connection or problems with IRC or serial #s.
-- Linux installer allows root or non-root, RPM or non-RPM installs.
-- FLEXlm license servers (for those who need floating/counted licenses)
- are provided separately on Intel(R) Premier.
-
-------------------------------------------------------------------------
-Intel and Cilk are registered trademarks or trademarks of Intel Corporation or its
-subsidiaries in the United States and other countries.
-
-* Other names and brands may be claimed as the property of others.
diff --git a/tbb-2019-attributes.patch b/tbb-2019-attributes.patch
new file mode 100644
index 0000000..ebb71fb
--- /dev/null
+++ b/tbb-2019-attributes.patch
@@ -0,0 +1,31 @@
+diff -up tbb-2019_U7/src/tbbmalloc/proxy.cpp.orig tbb-2019_U7/src/tbbmalloc/proxy.cpp
+--- tbb-2019_U7/src/tbbmalloc/proxy.cpp.orig 2019-05-23 04:35:29.000000000 -0600
++++ tbb-2019_U7/src/tbbmalloc/proxy.cpp 2019-05-23 18:25:22.360659477 -0600
+@@ -146,7 +146,7 @@ static inline void initPageSize()
+ 1) detection that the proxy library is loaded
+ 2) check that dlsym("malloc") found something different from our replacement malloc
+ */
+-extern "C" void *__TBB_malloc_proxy(size_t) __attribute__ ((alias ("malloc")));
++extern "C" void *__TBB_malloc_proxy(size_t) __attribute__ ((alias ("malloc"), copy (malloc)));
+
+ static void *orig_msize;
+
+@@ -293,11 +293,11 @@ void *aligned_alloc(size_t alignment, si
+ // in conjunction with standard malloc/free, so we must ovberload them.
+ // Bionic doesn't have them. Not removing from the linker scripts,
+ // as absent entry points are ignored by the linker.
+-void *__libc_malloc(size_t size) __attribute__ ((alias ("malloc")));
+-void *__libc_calloc(size_t num, size_t size) __attribute__ ((alias ("calloc")));
+-void *__libc_memalign(size_t alignment, size_t size) __attribute__ ((alias ("memalign")));
+-void *__libc_pvalloc(size_t size) __attribute__ ((alias ("pvalloc")));
+-void *__libc_valloc(size_t size) __attribute__ ((alias ("valloc")));
++void *__libc_malloc(size_t size) __attribute__ ((alias ("malloc"), copy (malloc)));
++void *__libc_calloc(size_t num, size_t size) __attribute__ ((alias ("calloc"), copy (calloc)));
++void *__libc_memalign(size_t alignment, size_t size) __attribute__ ((alias ("memalign"), copy (memalign)));
++void *__libc_pvalloc(size_t size) __attribute__ ((alias ("pvalloc"), copy (pvalloc)));
++void *__libc_valloc(size_t size) __attribute__ ((alias ("valloc"), copy (valloc)));
+
+ // call original __libc_* to support naive replacement of free via __libc_free etc
+ void __libc_free(void *ptr)
+
+Diff finished. Wed May 23 18:26:03 2019
diff --git a/tbb-2019-dont-snip-Wall.patch b/tbb-2019-dont-snip-Wall.patch
new file mode 100644
index 0000000..3c0e884
--- /dev/null
+++ b/tbb-2019-dont-snip-Wall.patch
@@ -0,0 +1,43 @@
+diff -up tbb-2019_U6/build/common_rules.inc.orig tbb-2019_U6/build/common_rules.inc
+--- tbb-2019_U6/build/common_rules.inc.orig 2019-04-18 05:14:08.000000000 -0600
++++ tbb-2019_U6/build/common_rules.inc 2019-05-08 08:30:03.434532204 -0600
+@@ -126,7 +126,7 @@ LINK_FILES+=$(TEST_LIBS)
+
+ # Customizations
+ $(KNOWN_WARNINGS): %.$(OBJ): %.cpp
+- $(CPLUS) $(COMPILE_ONLY) $(subst $(WARNING_KEY),,$(CPLUS_FLAGS)) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $<
++ $(CPLUS) $(COMPILE_ONLY) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $<
+
+ tbb_misc.$(OBJ): version_string.ver
+ tbb_misc.$(OBJ): INCLUDES+=$(INCLUDE_KEY).
+diff -up tbb-2019_U6/build/Makefile.tbbmalloc.orig tbb-2019_U6/build/Makefile.tbbmalloc
+--- tbb-2019_U6/build/Makefile.tbbmalloc.orig 2019-04-18 05:14:08.000000000 -0600
++++ tbb-2019_U6/build/Makefile.tbbmalloc 2019-05-08 08:30:03.447531968 -0600
+@@ -47,11 +47,11 @@ ORIG_LINK_MALLOC.LIB:=$(LINK_MALLOC.LIB)
+ MALLOC_CPLUS.OBJ = backend.$(OBJ) large_objects.$(OBJ) backref.$(OBJ) tbbmalloc.$(OBJ)
+ MALLOC.OBJ := $(MALLOC_CPLUS.OBJ) $(MALLOC_ASM.OBJ) itt_notify_malloc.$(OBJ) frontend.$(OBJ)
+ PROXY.OBJ := proxy.$(OBJ) tbb_function_replacement.$(OBJ)
+-M_CPLUS_FLAGS += $(DEFINE_KEY)__TBBMALLOC_BUILD=1
++M_CPLUS_FLAGS += -fno-strict-aliasing $(DEFINE_KEY)__TBBMALLOC_BUILD=1
+ M_INCLUDES := $(INCLUDES) $(INCLUDE_KEY)$(MALLOC_ROOT) $(INCLUDE_KEY)$(MALLOC_SOURCE_ROOT)
+
+ # Suppress superfluous warnings for TBBMalloc compilation
+-$(MALLOC.OBJ): M_CPLUS_FLAGS := $(subst $(WARNING_KEY),,$(M_CPLUS_FLAGS)) $(WARNING_SUPPRESS)
++$(MALLOC.OBJ): M_CPLUS_FLAGS := $(M_CPLUS_FLAGS) $(WARNING_SUPPRESS)
+ # Suppress superfluous warnings for TBBMalloc proxy compilation
+ $(PROXY.OBJ): CPLUS_FLAGS += $(WARNING_SUPPRESS)
+
+diff -up tbb-2019_U6/build/Makefile.test.orig tbb-2019_U6/build/Makefile.test
+--- tbb-2019_U6/build/Makefile.test.orig 2019-05-08 08:30:03.448531949 -0600
++++ tbb-2019_U6/build/Makefile.test 2019-05-08 08:31:48.190498336 -0600
+@@ -266,7 +266,7 @@ test_tbb_plain: $(TEST_PREREQUISITE) $(T
+
+
+ # For deprecated files, we don't mind warnings etc., thus compilation rules are most relaxed
+-CPLUS_FLAGS_DEPRECATED = $(DEFINE_KEY)__TBB_TEST_DEPRECATED=1 $(subst $(WARNING_KEY),,$(CPLUS_FLAGS)) $(WARNING_SUPPRESS) $(INCLUDE_KEY)$(tbb_root)/src/test
++CPLUS_FLAGS_DEPRECATED = $(DEFINE_KEY)__TBB_TEST_DEPRECATED=1 $(CPLUS_FLAGS) $(WARNING_SUPPRESS) $(INCLUDE_KEY)$(tbb_root)/src/test
+ TEST_TBB_OLD.OBJ = test_concurrent_vector_v2.$(OBJ) test_concurrent_queue_v2.$(OBJ) test_mutex_v2.$(OBJ) test_task_scheduler_observer_v3.$(OBJ)
+
+ $(TEST_TBB_OLD.OBJ): CPLUS_FLAGS := $(CPLUS_FLAGS_DEPRECATED)
+
+Diff finished. Wed May 8 08:31:49 2019
diff --git a/tbb-2019-fetchadd4.patch b/tbb-2019-fetchadd4.patch
new file mode 100644
index 0000000..72b0d09
--- /dev/null
+++ b/tbb-2019-fetchadd4.patch
@@ -0,0 +1,12 @@
+diff -up tbb-2019_U9/src/tbb/tools_api/ittnotify_config.h.orig tbb-2019_U9/src/tbb/tools_api/ittnotify_config.h
+--- tbb-2020.1/src/tbb/tools_api/ittnotify_config.h.orig 2020-01-21 04:26:46.000000000 -0700
++++ tbb-2020.1/src/tbb/tools_api/ittnotify_config.h 2020-01-22 20:59:51.911673011 -0700
+@@ -335,7 +335,7 @@ ITT_INLINE long
+ __itt_interlocked_increment(volatile long* ptr) ITT_INLINE_ATTRIBUTE;
+ ITT_INLINE long __itt_interlocked_increment(volatile long* ptr)
+ {
+- return __TBB_machine_fetchadd4(ptr, 1) + 1L;
++ return __atomic_fetch_add(ptr, 1L, __ATOMIC_SEQ_CST) + 1L;
+ }
+ #endif /* ITT_SIMPLE_INIT */
+
diff --git a/tbb-2019-test-task-scheduler-init.patch b/tbb-2019-test-task-scheduler-init.patch
new file mode 100644
index 0000000..9eca318
--- /dev/null
+++ b/tbb-2019-test-task-scheduler-init.patch
@@ -0,0 +1,12 @@
+diff -up tbb-2019_U8/src/test/test_task_scheduler_init.cpp.orig tbb-2019_U8/src/test/test_task_scheduler_init.cpp
+--- tbb-2019_U8/src/test/test_task_scheduler_init.cpp.orig 2019-06-06 04:29:15.000000000 -0600
++++ tbb-2019_U8/src/test/test_task_scheduler_init.cpp 2019-08-26 12:08:19.547880295 -0600
+@@ -285,7 +285,7 @@ namespace TestBlockingTerminateNS {
+ }
+ };
+ void operator()() {
+- const int numThreads = 4;
++ const int numThreads = 2;
+ tbb::task_scheduler_init init( numThreads );
+ Harness::SpinBarrier barrier( numThreads );
+ tbb::parallel_for( 0, numThreads, Body( barrier ) );
diff --git a/tbb-2019-test-thread-monitor.patch b/tbb-2019-test-thread-monitor.patch
new file mode 100644
index 0000000..27d6a19
--- /dev/null
+++ b/tbb-2019-test-thread-monitor.patch
@@ -0,0 +1,47 @@
+--- tbb-2019_U8/src/rml/test/test_thread_monitor.cpp.orig 2019-06-06 04:29:15.000000000 -0600
++++ tbb-2019_U8/src/rml/test/test_thread_monitor.cpp 2019-08-27 11:36:44.253575223 -0600
+@@ -33,21 +33,21 @@ public:
+ }
+ typedef rml::internal::thread_monitor thread_monitor;
+ thread_monitor monitor;
+- volatile int request;
+- volatile int ack;
+- volatile unsigned clock;
+- volatile unsigned stamp;
++ tbb::atomic<int> request;
++ tbb::atomic<int> ack;
++ tbb::atomic<unsigned> clock;
++ unsigned stamp;
+ ThreadState() : request(-1), ack(-1), clock(0) {}
+ };
+
+ void ThreadState::loop() {
+ for(;;) {
+- ++clock;
+ if( ack==request ) {
+ thread_monitor::cookie c;
+ monitor.prepare_wait(c);
+ if( ack==request ) {
+ REMARK("%p: request=%d ack=%d\n", this, request, ack );
++ ++clock;
+ monitor.commit_wait(c);
+ } else
+ monitor.cancel_wait();
+@@ -60,7 +60,7 @@ void ThreadState::loop() {
+ rml::internal::thread_monitor::yield();
+ }
+ int r = request;
+- ack = request;
++ ack = r;
+ if( !r ) return;
+ }
+ }
+@@ -89,7 +89,7 @@ int TestMain () {
+ REPORT("Warning: thread %d not waiting\n",i);
+ break;
+ }
+- } while( t[i].stamp!=t[i].clock );
++ } while( t[i].stamp==0 || t[i].stamp!=t[i].clock );
+ }
+ }
+ REMARK("notifying threads\n");
diff --git a/tbb-3.0-cxxflags.patch b/tbb-3.0-cxxflags.patch
deleted file mode 100644
index 0794e77..0000000
--- a/tbb-3.0-cxxflags.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -up tbb30_20110419oss/build/linux.gcc.inc\~ tbb30_20110419oss/build/linux.gcc.inc
---- tbb30_20110419oss/build/linux.gcc.inc~ 2011-04-19 13:48:58.000000000 +0200
-+++ tbb30_20110419oss/build/linux.gcc.inc 2011-07-26 14:02:48.482006056 +0200
-@@ -59,10 +59,10 @@ ifneq (,$(shell gcc -dumpversion | egrep
- endif
-
- ifeq ($(cfg), release)
-- CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD
-+ CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD $(CXXFLAGS)
- endif
- ifeq ($(cfg), debug)
-- CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD
-+ CPLUS_FLAGS = $(CXXFLAGS) -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD
- endif
-
- ifneq (00,$(lambdas)$(cpp0x))
-
-Diff finished. Tue Feb 26 13:00:13 2013
diff --git a/tbb-4.0-mfence.patch b/tbb-4.0-mfence.patch
deleted file mode 100644
index a463bc9..0000000
--- a/tbb-4.0-mfence.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up tbb40_20110809oss/include/tbb/machine/linux_ia32.h\~ tbb40_20110809oss/include/tbb/machine/linux_ia32.h
---- tbb40_20110809oss/include/tbb/machine/linux_ia32.h~ 2011-08-24 15:51:56.000000000 +0200
-+++ tbb40_20110809oss/include/tbb/machine/linux_ia32.h 2011-10-18 15:04:01.994271994 +0200
-@@ -42,7 +42,14 @@
- #define __TBB_control_consistency_helper() __TBB_compiler_fence()
- #define __TBB_acquire_consistency_helper() __TBB_compiler_fence()
- #define __TBB_release_consistency_helper() __TBB_compiler_fence()
--#define __TBB_full_memory_fence() __asm__ __volatile__("mfence": : :"memory")
-+#define __TBB_full_memory_fence() __TBB_full_memory_fence_imp()
-+inline void __TBB_full_memory_fence_imp() {
-+ int tmp;
-+ __asm__ __volatile__("xchg %0,%0"
-+ : "=r"(tmp)
-+ : "r"(tmp)
-+ : "memory");
-+}
-
- #if __TBB_ICC_ASM_VOLATILE_BROKEN
- #define __TBB_VOLATILE
-
-Diff finished. Tue Oct 18 15:04:09 2011
diff --git a/tbb.pc b/tbb.pc
deleted file mode 100644
index d3bae0a..0000000
--- a/tbb.pc
+++ /dev/null
@@ -1,5 +0,0 @@
-Name: Threading Building Blocks
-Description: The Threading Building Blocks library abstracts low-level threading details
-URL: http://www.threadingbuildingblocks.org/
-Version: @VERSION@
-Libs: -ltbb
diff --git a/tbb.spec b/tbb.spec
index b1426c1..71a1309 100644
--- a/tbb.spec
+++ b/tbb.spec
@@ -1,252 +1,173 @@
-%define reldate 20140122
-%define major 4
-%define minor 2
-%define update 3
-%define dotver %{major}.%{minor}
-%define oname tbb%{major}%{minor}_%{reldate}oss
-
-%define tbbmaj 2
-%define libtbb %mklibname tbb %{tbbmaj}
-%define libtbm %mklibname tbbmalloc %{tbbmaj}
-%define libtbmp %mklibname tbbmalloc_proxy %{tbbmaj}
-%define devname %mklibname -d tbb
+%define major 2
-Name: tbb
-Summary: The Threading Building Blocks library abstracts low-level threading details
-Version: %{dotver}
-Release: 1.%{reldate}.3
-License: GPLv2 with exceptions
-Group: Development/C++
-URL: http://threadingbuildingblocks.org/
+%define libtbb %mklibname tbb %{major}
+%define libtbbmalloc %mklibname tbbmalloc %{major}
+%define libtbbmalloc_proxy %mklibname tbbmalloc_proxy %{major}
+%define libirml %mklibname irml 1
+%define devname %mklibname -d tbb
-Source0: http://threadingbuildingblocks.org/sites/default/files/software_releases/source/%{oname}_src.tgz
+Summary: Thread Building Blocks
+Name: tbb
+Version: 2020.1
+Release: 1
+Url: http://threadbuildingblocks.org/
+Source0: https://github.com/intel/tbb/archive/v%{version}/%{name}-%{version}.tar.gz
+License: Apache 2.0
+Group: System/Libraries
+BuildRequires: make
+BuildRequires: doxygen graphviz
+BuildRequires: pkgconfig(python3)
+BuildRequires: swig
+# Don't snip -Wall from C++ flags. Add -fno-strict-aliasing, as that
+# uncovers some static-aliasing warnings.
+# Related: https://bugzilla.redhat.com/show_bug.cgi?id=1037347
+Patch0: https://src.fedoraproject.org/rpms/tbb/raw/master/f/tbb-2019-dont-snip-Wall.patch
+# Make attributes of aliases match those on the aliased function.
+Patch1: https://src.fedoraproject.org/rpms/tbb/raw/master/f/tbb-2019-attributes.patch
+# Fix test-thread-monitor, which had multiple bugs that could (and did, on
+# ppc64le) result in a hang.
+Patch2: https://src.fedoraproject.org/rpms/tbb/raw/master/f/tbb-2019-test-thread-monitor.patch
+# Fix a test that builds a 4-thread barrier, but cannot guarantee that more
+# than 2 threads will be available to use it.
+Patch3: https://src.fedoraproject.org/rpms/tbb/raw/master/f/tbb-2019-test-task-scheduler-init.patch
+# Fix compilation on aarch64 and s390x. See
+# https://github.com/intel/tbb/issues/186
+Patch4: https://src.fedoraproject.org/rpms/tbb/raw/master/f/tbb-2019-fetchadd4.patch
-# These two are downstream sources.
-Source6: tbb.pc
-Source7: tbbmalloc.pc
-Source8: tbbmalloc_proxy.pc
+%description
+Thread Building Blocks
-# Propagate CXXFLAGS variable into flags used when compiling C++.
-# This so that RPM_OPT_FLAGS are respected.
-Patch1: tbb-3.0-cxxflags.patch
+%package -n %{libtbb}
+Summary: Thread Building Blocks library
+Group: System/Libraries
-# Replace mfence with xchg (for 32-bit builds only) so that TBB
-# compiles and works supported hardware. mfence was added with SSE2,
-# which we still don't assume.
-Patch2: tbb-4.0-mfence.patch
+%description -n %{libtbb}
+Thread Building Blocks library
-ExclusiveArch: %{ix86} %{x86_64} ia64 ppc ppc64 %{armx} %{riscv}
+%files -n %{libtbb}
+%{_libdir}/libtbb.so.%{major}
-%description
-Threading Building Blocks (TBB) is a C++ runtime library that
-abstracts the low-level threading details necessary for optimal
-multi-core performance. It uses common C++ templates and coding style
-to eliminate tedious threading implementation work.
-
-TBB requires fewer lines of code to achieve parallelism than other
-threading models. The applications you write are portable across
-platforms. Since the library is also inherently scalable, no code
-maintenance is required as more processor cores become available.
-
-%package -n %{libtbb}
-Summary: Threading Building Blocks
+%package -n %{libtbbmalloc}
+Summary: Thread Building Blocks library
Group: System/Libraries
-%description -n %{libtbb}
-The Threading Building Blocks library abstracts low-level threading details
+%description -n %{libtbbmalloc}
+Thread Building Blocks library
-Threading Building Blocks (TBB) is a C++ runtime library that
-abstracts the low-level threading details necessary for optimal
-multi-core performance. It uses common C++ templates and coding style
-to eliminate tedious threading implementation work.
+%files -n %{libtbbmalloc}
+%{_libdir}/libtbbmalloc.so.%{major}
-TBB requires fewer lines of code to achieve parallelism than other
-threading models. The applications you write are portable across
-platforms. Since the library is also inherently scalable, no code
-maintenance is required as more processor cores become available.
-
-%package -n %{libtbm}
-Summary: Threading Building Blocks Scalable Allocator
+%package -n %{libtbbmalloc_proxy}
+Summary: Thread Building Blocks library
Group: System/Libraries
-%description -n %{libtbm}
-Implementation of Scalable Memory Allocator of Threading Building Blocks.
+%description -n %{libtbbmalloc_proxy}
+Thread Building Blocks library
+
+%files -n %{libtbbmalloc_proxy}
+%{_libdir}/libtbbmalloc_proxy.so.%{major}
-%package -n %{libtbmp}
-Summary: Threading Building Blocks Scallable Malloc Proxy
+%package -n %{libirml}
+Summary: Thread Building Blocks library
Group: System/Libraries
-%description -n %{libtbmp}
-Implementation of proxy that redirects memory allocation calls to TBB Scalable
-Memory Allocator.
+%description -n %{libirml}
+Thread Building Blocks library
+
+%files -n %{libirml}
+%{_libdir}/libirml.so.1
-%package -n %{devname}
-Summary: The Threading Building Blocks C++ headers and shared development libraries
-Group: Development/C++
+%package -n %{devname}
+Summary: Development files for the Thread Building Blocks library
+Group: Development/C++ and C
Requires: %{libtbb} = %{EVRD}
-Requires: %{libtbm} = %{EVRD}
-Requires: %{libtbmp} = %{EVRD}
+Requires: %{libtbbmalloc} = %{EVRD}
+Requires: %{libtbbmalloc_proxy} = %{EVRD}
+Requires: %{libirml} = %{EVRD}
Provides: %{name}-devel = %{EVRD}
-%description -n %{devname}
-Header files and shared object symlinks for the Threading Building
-Blocks (TBB) C++ libraries.
-
-%package doc
-Summary: The Threading Building Blocks documentation
-Group: Books/Computer books
-
-%description doc
-PDF documentation for the user of the Threading Building Block (TBB)
-C++ library.
-
-%prep
-%setup -q -n %{oname}
-%patch1 -p1
-%patch2 -p1
-
-%build
-%make CXXFLAGS="%{optflags}" LDFLAGS="%{ldflags}" tbb_build_prefix=obj
-for file in %{SOURCE6} %{SOURCE7} %{SOURCE8}; do
- sed 's/@VERSION@/%{major}.%{minor}.%{update}/' ${file} > $(basename ${file})
-done
-
-%install
-pushd build/obj_release
- for file in libtbb*.so.%{tbbmaj}; do
- install -p -m755 ${file} -D %{buildroot}%{_libdir}/${file}
- ln -s ${file} %{buildroot}%{_libdir}/$(echo ${file}|cut -d. -f1-2)
- done
-popd
-
-pushd include
- find tbb -type f ! -name \*.htm\* -exec \
- install -p -m 644 {} -D %{buildroot}%{_includedir}/{} \
- \;
-popd
-
-for file in tbb*.pc; do
- install -p -m644 ${file} -D %{buildroot}%{_libdir}/pkgconfig/${file}
-done
-
-%files -n %{libtbb}
-%{_libdir}/libtbb.so.%{tbbmaj}*
-
-%files -n %{libtbm}
-%{_libdir}/libtbbmalloc.so.%{tbbmaj}*
-
-%files -n %{libtbmp}
-%{_libdir}/libtbbmalloc_proxy.so.%{tbbmaj}*
+%description -n %{devname}
+Development files for the Thread Building Blocks library
%files -n %{devname}
-%doc COPYING CHANGES
+%doc html
%{_includedir}/tbb
-%{_libdir}/libtbb*.so
-%{_libdir}/pkgconfig/tbb*.pc
-
-%files doc
-%doc doc/Release_Notes.txt
-%doc doc/html
-
-%changelog
-* Fri Feb 28 2014 Per Øyvind Karlsen <proyvind@moondrake.org> 4.2-1.20140122.1
-- initial mdk release adapted from Fedora
-
-* Sun Jan 12 2014 Peter Robinson <pbrobinson@fedoraproject.org> 4.1-6.20130314
-- Build on aarch64, minor spec cleanups
-
-* Tue Dec 3 2013 Petr Machata <pmachata@redhat.com> - 4.1-5.20130314
-- Fix building with -Werror=format-security (tbb-4.1-dont-snip-Wall.patch)
-
-* Thu Oct 3 2013 Petr Machata <pmachata@redhat.com> - 4.1-4.20130314
-- Fix %%install to also install include files that are not named *.h
-
-* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.1-3.20130314
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
-
-* Tue May 28 2013 Petr Machata <pmachata@redhat.com> - 4.1-3.20130314
-- Enable ARM arches
-
-* Wed May 22 2013 Petr Machata <pmachata@redhat.com> - 4.1-2.20130314
-- Fix mfence patch. Since the __TBB_full_memory_fence macro was
- function-call-like, it stole () intended for function invocation.
-
-* Wed May 22 2013 Petr Machata <pmachata@redhat.com> - 4.1-1.20130314
-- Rebase to 4.1 update 3
-
-* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.0-7.20120408
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
-
-* Tue Aug 28 2012 Petr Machata <pmachata@redhat.com> - 4.0-6.20120408
-- Fix build on PowerPC
-
-* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.0-5.20120408
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
-
-* Thu Jun 7 2012 Petr Machata <pmachata@redhat.com> - 4.0-4.20120408
-- Rebase to 4.0 update 4
-- Refresh Getting_Started.pdf, Reference.pdf, Tutorial.pdf
-- Provide pkg-config files
-- Resolves: #825402
-
-* Thu Apr 05 2012 Karsten Hopp <karsten@redhat.com> 4.0-3.20110809
-- tbb builds now on PPC(64)
-
-* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.0-2.20110809
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
-
-* Tue Oct 18 2011 Petr Machata <pmachata@redhat.com> - 4.0-1.20110809
-- Rebase to 4.0
- - Port the mfence patch
- - Refresh the documentation bundle
-
-* Tue Jul 26 2011 Petr Machata <pmachata@redhat.com> - 3.0-1.20110419
-- Rebase to 3.0-r6
- - Port both patches
- - Package Design_Patterns.pdf
- - Thanks to Richard Shaw for initial rebase patch
-- Resolves: #723043
-
-* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.2-3.20090809
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
-
-* Thu Jun 10 2010 Petr Machata <pmachata@redhat.com> - 2.2-2.20090809
-- Replace mfence instruction with xchg to make it run on ia32-class
- machines without SSE2.
-- Resolves: #600654
-
-* Tue Nov 3 2009 Petr Machata <pmachata@redhat.com> - 2.2-1.20090809
-- New upstream 2.2
-- Resolves: #521571
+%{_includedir}/rml
+%{_includedir}/serial
+%{_libdir}/*.so
+%{_libdir}/cmake/tbb
+%{_libdir}/pkgconfig/*.pc
+
+%package -n python-%{name}
+Summary: Python bindings for Thread Building Blocks
+Group: System/Libraries
-* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1-3.20080605
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+%description -n python-%{name}
+Python bindings for Thread Building Blocks
-* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1-2.20080605
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+%files -n python-%{name}
+%{python3_sitearch}/TBB*
+%{python3_sitearch}/tbb
+%{python3_sitearch}/__pycache__/TBB*
-* Fri Jun 13 2008 Petr Machata <pmachata@redhat.com> - 2.1-1.20080605
-- New upstream 2.1
- - Drop soname patch, parallel make patch, and GCC 4.3 patch
+%prep
+%autosetup -p1
-* Wed Feb 13 2008 Petr Machata <pmachata@redhat.com> - 2.0-4.20070927
-- Review fixes
- - Use updated URL
- - More timestamp preservation
-- Initial import into Fedora CVS
+%build
+if echo %{__cc} | grep -q gcc; then
+ COMPILER=gcc
+else
+ # Workaround for clang bug
+ COMPILER=gcc #clang
+fi
+%make_build all compiler=$COMPILER stdver=c++2a \
+ CXXFLAGS="%{optflags} -DDO_ITT_NOTIFY -DUSE_PTHREAD" \
+ LDFLAGS="%{ldflags} -pthread"
+
+. build/*_release/tbbvars.sh
+cd python
+%make_build -C rml stdver=c++2a \
+ CPLUS_FLAGS="%{optflags} -DDO_ITT_NOTIFY -DUSE_PTHREAD" \
+ LDFLAGS="%{ldflags} -pthread"
+cp -a rml/libirml.so* .
+%py3_build
+cd -
+
+%make_build doxygen
-* Mon Feb 11 2008 Petr Machata <pmachata@redhat.com> - 2.0-3.20070927
-- Review fixes
- - Preserve timestamp of installed files
- - Fix soname not to contain "debug"
-* Tue Feb 5 2008 Petr Machata <pmachata@redhat.com> - 2.0-2.20070927
-- Review fixes
- - GCC 4.3 patchset
- - Add BR util-linux net-tools
- - Add full URL to Source0
- - Build in debug mode to work around problems with GCC 4.3
+%install
+mkdir -p %{buildroot}%{_libdir}/cmake %{buildroot}%{_libdir}/pkgconfig
+install -p -D -m 755 build/*_release/*.so.%{major} %{buildroot}%{_libdir}/
-* Mon Dec 17 2007 Petr Machata <pmachata@redhat.com> - 2.0-1.20070927
-- Initial package.
-- Using SONAME patch from Debian.
+cd %{buildroot}%{_libdir}
+for i in *.so.*; do
+ ln -s $i $(echo $i |sed -e 's,\.so\..*,.so,')
+done
+cd -
+
+cp -a include %{buildroot}%{_includedir}
+cp -a src/rml/include %{buildroot}%{_includedir}/rml
+
+find %{buildroot}%{_includedir} -name "*.html" |xargs rm -f
+
+. build/*_release/tbbvars.sh
+cd python
+%py3_install
+find %{buildroot} -name "*.py" |xargs chmod +x
+cp -a libirml.so.1 %{buildroot}%{_libdir}/
+ln -s libirml.so.1 %{buildroot}%{_libdir}/libirml.so
+cd -
+
+rm cmake/README.rst
+cp -a cmake %{buildroot}%{_libdir}/cmake/%{name}
+
+for i in tbb tbbmalloc tbbmalloc_proxy irml; do
+ cat >%{buildroot}%{_libdir}/pkgconfig/$i.pc <<EOF
+Name: Thread Building Blocks - $i
+Description: %{summary}
+URL: http://threadbuildingblocks.org/
+Version: %{version}
+Libs: -l$i
+EOF
+done
diff --git a/tbbmalloc.pc b/tbbmalloc.pc
deleted file mode 100644
index b8ef0ea..0000000
--- a/tbbmalloc.pc
+++ /dev/null
@@ -1,5 +0,0 @@
-Name: Threading Building Blocks Scalable Allocator
-Description: Implementation of Scalable Memory Allocator of Threading Building Blocks
-URL: http://www.threadingbuildingblocks.org/
-Version: @VERSION@
-Libs: -ltbbmalloc
diff --git a/tbbmalloc_proxy.pc b/tbbmalloc_proxy.pc
deleted file mode 100644
index 1508990..0000000
--- a/tbbmalloc_proxy.pc
+++ /dev/null
@@ -1,5 +0,0 @@
-Name: Threading Building Blocks Scallable Malloc Proxy
-Description: Implementation of proxy that redirects memory allocation calls to TBB Scalable Memory Allocator
-URL: http://www.threadingbuildingblocks.org/
-Version: @VERSION@
-Libs: -ltbbmalloc_proxy -ltbbmalloc