diff --git a/.Rbuildignore b/.Rbuildignore
index 82fd49b57..583eb513a 100644
--- a/.Rbuildignore
+++ b/.Rbuildignore
@@ -11,7 +11,7 @@
^inst/libs$
^revdep$
^src/.*\.o$
-^src/tbb/build/lib_.*$
+^src/tbb/build$
^tags$
^tests/testthat/pkg/RcppParallelTest/src/.*\.dll$
^tests/testthat/pkg/RcppParallelTest/src/.*\.s?o$
diff --git a/.gitignore b/.gitignore
index c5c648887..1fcbe5052 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,6 +12,8 @@ src-i386
src-x64
tbb.log
+src/tbb/build
+src/tbb/build-tbb
+
R/tbb-autodetected.R
-src/install.libs.R
diff --git a/DESCRIPTION b/DESCRIPTION
index e3887f5c8..f01eba696 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -3,36 +3,37 @@ Type: Package
Title: Parallel Programming Tools for 'Rcpp'
Version: 5.1.9.9000
Authors@R: c(
+ person("Kevin", "Ushey", role = c("aut", "cre"), email = "kevin@rstudio.com",
+ comment = c(ORCID = "0000-0003-2880-7407")),
person("JJ", "Allaire", role = c("aut"), email = "jj@rstudio.com"),
person("Romain", "Francois", role = c("aut", "cph")),
- person("Kevin", "Ushey", role = c("aut", "cre"), email = "kevin@rstudio.com"),
person("Gregory", "Vandenbrouck", role = "aut"),
person("Marcus", "Geelnard", role = c("aut", "cph"),
comment = "TinyThread library, https://tinythreadpp.bitsnbites.eu/"),
- person("Hamada S.", "Badr",
- email = "badr@jhu.edu",
- role = c("ctb"),
+ person("Hamada S.", "Badr", email = "badr@jhu.edu", role = c("ctb"),
comment = c(ORCID = "0000-0002-9808-2344")),
- person(family = "Posit, PBC", role = "cph"),
- person(family = "Intel", role = c("aut", "cph"),
- comment = "Intel TBB library, https://www.threadingbuildingblocks.org/"),
- person(family = "Microsoft", role = "cph")
+ person("Dirk", "Eddelbuettel", role = c("aut"), email = "edd@debian.org",
+ comment = c(ORCID = "0000-0001-6419-907X")),
+ person(family = "Intel", role = c("aut", "cph"), comment = "oneTBB library"),
+ person(family = "UXL Foundation", role = c("aut", "cph"), comment = "oneTBB library"),
+ person(family = "Microsoft", role = "cph"),
+ person(family = "Posit, PBC", role = "cph")
)
Description: High level functions for parallel programming with 'Rcpp'.
For example, the 'parallelFor()' function can be used to convert the work of
a standard serial "for" loop into a parallel one and the 'parallelReduce()'
function can be used for accumulating aggregate or other values.
-Depends: R (>= 3.0.2)
+Depends: R (>= 3.6.0)
Suggests:
Rcpp,
RUnit,
knitr,
rmarkdown
Roxygen: list(markdown = TRUE)
-SystemRequirements: GNU make, Intel TBB, Windows: cmd.exe and cscript.exe, Solaris: g++ is required
+SystemRequirements: CMake (>= 3.5)
License: GPL (>= 3)
URL: https://rcppcore.github.io/RcppParallel/, https://github.com/RcppCore/RcppParallel
BugReports: https://github.com/RcppCore/RcppParallel/issues
Biarch: TRUE
-RoxygenNote: 7.1.1
+RoxygenNote: 7.3.2
Encoding: UTF-8
diff --git a/NEWS.md b/NEWS.md
index 8a7df9ceb..6a00f678d 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,6 +1,12 @@
## RcppParallel 5.1.10 (UNRELEASED)
+* RcppParallel now bundles oneTBB 2022.0.0.
+
+* On Windows, RcppParallel now uses the copy of TBB provided by Rtools, if any.
+ If TBB is not available, RcppParallel will use only the fallback 'tinythread'
+ implementation. In practice, this implies that RcppParallel will now only
+ provide a TBB backend with R (>= 4.2.0).
## RcppParallel 5.1.9
diff --git a/R/aaa.R b/R/aaa.R
index 5476a08e6..568a2aac9 100644
--- a/R/aaa.R
+++ b/R/aaa.R
@@ -1,4 +1,8 @@
# stubs that get overridden via configure script
-TBB_LIB <- ""
-TBB_INC <- ""
+TBB_ENABLED <- TRUE
+TBB_LIB <- ""
+TBB_INC <- ""
+
+TBB_NAME <- "tbb"
+TBB_MALLOC_NAME <- "tbbmalloc"
\ No newline at end of file
diff --git a/R/tbb-autodetected.R.in b/R/tbb-autodetected.R.in
index 74a8f2c33..7cc750e09 100644
--- a/R/tbb-autodetected.R.in
+++ b/R/tbb-autodetected.R.in
@@ -1,3 +1,7 @@
-TBB_LIB <- "@TBB_LIB@"
-TBB_INC <- "@TBB_INC@"
+TBB_ENABLED <- @TBB_ENABLED@
+TBB_LIB <- "@TBB_LIB@"
+TBB_INC <- "@TBB_INC@"
+
+TBB_NAME <- "@TBB_NAME@"
+TBB_MALLOC_NAME <- "@TBB_MALLOC_NAME@"
\ No newline at end of file
diff --git a/R/tbb.R b/R/tbb.R
index 4c8fc14cf..d56f8d460 100644
--- a/R/tbb.R
+++ b/R/tbb.R
@@ -50,7 +50,8 @@ tbbCxxFlags <- function() {
# opt-in to TBB on Windows
if (is_windows()) {
- flags <- c(flags, "-DRCPP_PARALLEL_USE_TBB=1")
+ enabled <- if (TBB_ENABLED) "1" else "0"
+ flags <- c(flags, sprintf("-DRCPP_PARALLEL_USE_TBB=%s", enabled))
if (R.version$arch == "aarch64") {
# TBB does not have assembly code for Windows ARM64
# so we need to use compiler builtins
@@ -60,6 +61,10 @@ tbbCxxFlags <- function() {
# if TBB_INC is set, apply those library paths
tbbInc <- Sys.getenv("TBB_INC", unset = TBB_INC)
+ if (!file.exists(tbbInc)) {
+ tbbInc <- system.file("include", package = "Rcpp")
+ }
+
if (nzchar(tbbInc)) {
# add include path
@@ -80,20 +85,30 @@ tbbCxxFlags <- function() {
# Return the linker flags required for TBB on this platform
tbbLdFlags <- function() {
+ # on Windows, we statically link to oneTBB
+ if (is_windows()) {
+
+ libPath <- system.file("libs", package = "RcppParallel")
+ if (nzchar(.Platform$r_arch))
+ libPath <- file.path(libPath, .Platform$r_arch)
+
+ ldFlags <- sprintf("-L%s -lRcppParallel", asBuildPath(libPath))
+ return(ldFlags)
+
+ }
+
# shortcut if TBB_LIB defined
tbbLib <- Sys.getenv("TBB_LINK_LIB", Sys.getenv("TBB_LIB", unset = TBB_LIB))
if (nzchar(tbbLib)) {
- fmt <- if (is_windows()) "-L%1$s -ltbb -ltbbmalloc"
- else "-L%1$s -Wl,-rpath,%1$s -ltbb -ltbbmalloc"
- return(sprintf(fmt, asBuildPath(tbbLib)))
+ fmt <- "-L%1$s -Wl,-rpath,%1$s -l%2$s -l%3$s"
+ return(sprintf(fmt, asBuildPath(tbbLib), TBB_NAME, TBB_MALLOC_NAME))
}
- # on Mac, Windows and Solaris, we need to explicitly link (#206)
- needsExplicitFlags <- is_mac() || is_windows() || (is_solaris() && !is_sparc())
- if (needsExplicitFlags) {
- libPath <- asBuildPath(tbbLibraryPath())
- libFlag <- paste0("-L", libPath)
- return(paste(libFlag, "-ltbb", "-ltbbmalloc"))
+ # explicitly link on macOS
+ # https://github.com/RcppCore/RcppParallel/issues/206
+ if (is_mac()) {
+ fmt <- "-L%s -l%s -l%s"
+ return(sprintf(fmt, asBuildPath(tbbLibraryPath()), TBB_NAME, TBB_MALLOC_NAME))
}
# nothing required on other platforms
diff --git a/RcppParallel.Rproj b/RcppParallel.Rproj
index 6a05b3721..fc2c81ee4 100644
--- a/RcppParallel.Rproj
+++ b/RcppParallel.Rproj
@@ -1,4 +1,5 @@
Version: 1.0
+ProjectId: 8e3d73b0-404c-42f5-b2ef-46f759f65dd4
RestoreWorkspace: No
SaveWorkspace: No
diff --git a/inst/include/RcppParallel/Common.h b/inst/include/RcppParallel/Common.h
index 0e4c0e280..3b9d79781 100644
--- a/inst/include/RcppParallel/Common.h
+++ b/inst/include/RcppParallel/Common.h
@@ -13,7 +13,11 @@ inline int resolveValue(const char* envvar,
U defaultValue)
{
// if the requested value is non-zero and not the default, we can use it
- if (requestedValue != defaultValue && requestedValue > 0)
+ bool useRequestedValue =
+ requestedValue != static_cast(defaultValue) &&
+ requestedValue > 0;
+
+ if (useRequestedValue)
return requestedValue;
// otherwise, try reading the default from associated envvar
diff --git a/src/Makevars.in b/src/Makevars.in
index be8445f81..6d577a2a6 100644
--- a/src/Makevars.in
+++ b/src/Makevars.in
@@ -1,144 +1,17 @@
-PKG_CXXFLAGS = @CXX11STD@
+CMAKE = @CMAKE@
+R = @R@
-TBB_LIB = @TBB_LIB@
-TBB_INC = @TBB_INC@
+TBB_LIB = @TBB_LIB@
+TBB_INC = @TBB_INC@
+TBB_NAME = @TBB_NAME@
+TBB_MALLOC_NAME = @TBB_MALLOC_NAME@
-# If TBB_INC is defined, include those library paths.
-ifdef TBB_INC
- PKG_CPPFLAGS = -I../inst/include -I$(TBB_INC)
-else
- PKG_CPPFLAGS = -I../inst/include
-endif
+PKG_CPPFLAGS = @PKG_CPPFLAGS@
+PKG_CXXFLAGS = @PKG_CXXFLAGS@
-# If TBB_LIB is defined, link to that explicitly.
-ifdef TBB_LIB
- ifeq ($(OS), Windows_NT)
- PKG_LIBS = -Wl,-L"$(TBB_LIB)" -ltbb -ltbbmalloc
- else
- PKG_LIBS = -Wl,-L"$(TBB_LIB)" -Wl,-rpath,"$(TBB_LIB)" -ltbb -ltbbmalloc
- endif
-endif
+PKG_LIBS = @PKG_LIBS@ @PKG_LIBS_EXTRA@
-ifeq ($(OS), Windows_NT)
-
- USE_TBB=Windows
- TBB_COPY_PATTERN=tbb*.dll
-
- ARCH=$(shell "${R_HOME}/bin/R" --vanilla -s -e 'cat(R.version$$arch)')
- TBB_CXXFLAGS = @CXX11FLAGS@ -DTBB_NO_LEGACY=1
- ifeq "$(ARCH)" "aarch64"
- PKG_CPPFLAGS += -DTBB_USE_GCC_BUILTINS
- TBB_CXXFLAGS += -DTBB_USE_GCC_BUILTINS
- CLANG_CHECK := $(shell echo | $(CC) -E -dM - | findstr __clang__)
- ifneq ($(CLANG_CHECK), )
- WINARM64_CLANG=true
- endif
- endif
-
- MAKE = make
- MAKEFLAGS = -e -j1
- MAKE_CMD = \
- MSYS2_ARG_CONV_EXCL="*" \
- CYGWIN=nodosfilewarning \
- CONLY="@WINDOWS_CC@" \
- CPLUS="@WINDOWS_CXX11@" \
- CXXFLAGS="$(TBB_CXXFLAGS)" \
- PIC_KEY="@CXX11PICFLAGS@" \
- WARNING_SUPPRESS="" \
- WINARM64_CLANG="$(WINARM64_CLANG)" \
- $(MAKE)
-
-else
-
- UNAME := $(shell uname)
- TBB_COPY_PATTERN=libtbb*.*
-
- ifeq ($(UNAME), Darwin)
- USE_TBB=Mac
- MAKE_ARGS += arch=$(shell uname -m)
- endif
-
- ifeq ($(UNAME), Linux)
- USE_TBB=Linux
- endif
-
- ifeq ($(UNAME), SunOS)
- SUNOS_ARCH = $(shell uname -p)
- ifeq ($(SUNOS_ARCH), i386)
- USE_TBB=SunOS
- endif
- endif
-
- MAKEFLAGS += -e
- MAKE_CMD = \
- CONLY="@CC@ $(PKG_CPPFLAGS) @CPPFLAGS@" \
- CPLUS="@CXX11@ $(PKG_CPPFLAGS) @CPPFLAGS@" \
- CXXFLAGS="@CXX11FLAGS@ -DTBB_NO_LEGACY=1" \
- PIC_KEY="@CXX11PICFLAGS@" \
- WARNING_SUPPRESS="" \
- $(MAKE)
-
-endif
-
-ifdef USE_TBB
-
-PKG_CXXFLAGS += -DRCPP_PARALLEL_USE_TBB=1
-PKG_CXXFLAGS += -DTBB_SUPPRESS_DEPRECATED_MESSAGES=1
-
-MAKE_TARGETS = tbb_build_prefix=lib tbb_release tbbmalloc_release
-
-ifeq ($(USE_TBB), Windows)
-
- # rtools: turn on hacks to compensate for make and shell differences rtools<=>MinGW
- # compiler: overwrite default (which is cl = MS compiler)
- MAKE_ARGS += rtools=true compiler=gcc
-
- # TBB configure will detect mingw runtime with unknown arch on WINARM64_CLANG but not an
- # issue as we are using compiler built-ins instead of arch-specific code
- ifneq ($(WINARM64_CLANG), true)
- ifeq ($(WIN), 64)
- MAKE_ARGS += arch=intel64 runtime=mingw
- ARCH_DIR=x64/
- else
- MAKE_ARGS += arch=ia32 runtime=mingw
- ARCH_DIR=i386/
- endif
- endif
-
- # Linker needs access to the tbb dll; otherwise you get errors such as:
- # "undefined reference to `tbb::task_scheduler_init::terminate()'"
- PKG_LIBS += -Ltbb/build/lib_release -ltbb -ltbbmalloc
-endif
-
-# write compiler if set
-ifneq (@COMPILER@, )
- MAKE_ARGS += compiler=@COMPILER@
-endif
-
-# When TBB_LIB is unset on MacOS, link to the bundled version (#206)
-ifeq ($(USE_TBB)$(TBB_LIB),Mac)
- PKG_LIBS += -Ltbb/build/lib_release -ltbb -Wl,-rpath,'@loader_path/../lib'
-endif
-
-# For Solaris detect if this is 32-bit R on x86 and if so forward that to TBB
-ifeq ($(USE_TBB), SunOS)
- R_32BIT = $(shell ${R_HOME}/bin/Rscript -e 'cat(.Machine$$sizeof.pointer == 4)')
- ifeq ($(R_32BIT), TRUE)
- MAKE_ARGS += arch=ia32
- endif
-endif
-
-# Write compilation output to file, and log it if installation fails.
-ifeq ($(VERBOSE), )
- MAKE_LOG = > tbb.log 2>&1 \
- && echo "(tbb) TBB compilation finished successfully." \
- || cat tbb.log; rm -f tbb.log
-endif
-
-.PHONY: all tbb tbb-clean
-
-# Order is important in Windows' case. See PKG_LIBS above
all: tbb $(SHLIB)
# TBB needs to be built before our C++ sources are built, so that
@@ -148,21 +21,11 @@ $(OBJECTS): tbb
# NOTE: TBB libraries are installed via install.libs.R.
# However, we need to copy headers here so that they are visible during compilation.
tbb: tbb-clean
-ifdef TBB_LIB
- @echo "(tbb) Using system (Intel / OneAPI) TBB library."
- @echo "(tbb) TBB_LIB = $(TBB_LIB)"
- @echo "(tbb) TBB_INC = $(TBB_INC)"
- @mkdir -p ../inst/include
- @cp -R $(TBB_INC)/oneapi ../inst/include/ 2> /dev/null || :
- @cp -R $(TBB_INC)/serial ../inst/include/ 2> /dev/null || :
- @cp -R $(TBB_INC)/tbb ../inst/include/ 2> /dev/null || :
-else
- @echo "(tbb) Building TBB using bundled sources ..."
- @mkdir -p ../inst/include
- @cp -R tbb/include/* ../inst/include/
- @(cd tbb/src && $(MAKE_CMD) $(MAKE_ARGS) info)
- @(cd tbb/src && $(MAKE_CMD) $(MAKE_ARGS) $(MAKE_TARGETS) $(MAKE_LOG))
-endif
+ TBB_LIB="$(TBB_LIB)" TBB_INC="$(TBB_INC)" \
+ TBB_NAME="$(TBB_NAME)" TBB_MALLOC_NAME="$(TBB_MALLOC_NAME)" \
+ CC="$(CC)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" \
+ CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" \
+ CMAKE="$(CMAKE)" "@R@" -s -f install.libs.R --args build
# NOTE: we do not want to clean ../inst/lib or ../inst/libs here,
# as we may be writing to those locations in multiarch builds
@@ -171,13 +34,3 @@ tbb-clean:
@rm -rf ../inst/include/oneapi
@rm -rf ../inst/include/tbb_local
@rm -rf ../inst/include/serial
-
-clean: tbb-clean
-ifdef TBB_LIB
- @echo "Nothing to clean for TBB."
-else
- @(cd tbb/src; make clean)
-endif
-
-
-endif
diff --git a/src/install.libs.R b/src/install.libs.R
new file mode 100644
index 000000000..fd586bb1a
--- /dev/null
+++ b/src/install.libs.R
@@ -0,0 +1,169 @@
+
+# !diagnostics suppress=R_PACKAGE_DIR,SHLIB_EXT,R_ARCH
+.install.libs <- function(tbbLib) {
+
+ # copy default library
+ files <- Sys.glob(paste0("*", SHLIB_EXT))
+ dest <- file.path(R_PACKAGE_DIR, paste0("libs", R_ARCH))
+ dir.create(dest, recursive = TRUE, showWarnings = FALSE)
+ file.copy(files, dest, overwrite = TRUE)
+
+ # copy symbols if available
+ if (file.exists("symbols.rds"))
+ file.copy("symbols.rds", dest, overwrite = TRUE)
+
+ # also copy to package 'libs' folder, for devtools
+ libsDest <- paste0("../libs", R_ARCH)
+ dir.create(libsDest, recursive = TRUE, showWarnings = FALSE)
+ file.copy(files, libsDest, overwrite = TRUE)
+
+ # copy tbb (NOTE: do not use inst/ folder as R will resolve symlinks,
+ # behavior which we do _not_ want here!)
+ tbbDest <- file.path(R_PACKAGE_DIR, paste0("lib", R_ARCH))
+ dir.create(tbbDest, recursive = TRUE, showWarnings = FALSE)
+
+ # note: on Linux, TBB gets compiled with extensions like
+ # '.so.2', so be ready to handle those
+ shlibPattern <- switch(
+ Sys.info()[["sysname"]],
+ Windows = "^tbb.*\\.dll$",
+ Darwin = "^libtbb.*\\.dylib$",
+ "^libtbb.*\\.so.*$"
+ )
+
+ if (!nzchar(tbbLib)) {
+
+ # using bundled TBB
+ tbbLibs <- list.files(
+ path = "tbb/build/lib_release",
+ pattern = shlibPattern,
+ full.names = TRUE
+ )
+
+ for (tbbLib in tbbLibs) {
+ system2("cp", c("-P", shQuote(tbbLib), shQuote(tbbDest)))
+ }
+
+ } else {
+
+ # using system tbb
+ tbbLibs <- list.files(
+ path = tbbLib,
+ pattern = shlibPattern,
+ full.names = TRUE
+ )
+
+ # don't copy symlinks
+ tbbLibs <- tbbLibs[!nzchar(Sys.readlink(tbbLibs))]
+
+ # copy / link the libraries
+ useSymlinks <- Sys.getenv("TBB_USE_SYMLINKS", unset = "TRUE")
+ if (useSymlinks) {
+ file.symlink(tbbLibs, tbbDest)
+ } else {
+ for (tbbLib in tbbLibs) {
+ system2("cp", c("-P", shQuote(tbbLib), shQuote(tbbDest)))
+ }
+ }
+
+ }
+
+}
+
+useTbbPreamble <- function(tbbInc) {
+ dir.create("../inst/include", recursive = TRUE, showWarnings = FALSE)
+ for (suffix in c("oneapi", "serial", "tbb")) {
+ tbbPath <- file.path(tbbInc, suffix)
+ if (file.exists(tbbPath)) {
+ file.copy(tbbPath, "../inst/include", recursive = TRUE)
+ }
+ }
+}
+
+useSystemTbb <- function(tbbLib, tbbInc) {
+ useTbbPreamble(tbbInc)
+}
+
+useBundledTbb <- function() {
+
+ useTbbPreamble("tbb/include")
+ dir.create("tbb/build-tbb", showWarnings = FALSE)
+
+ cmake <- Sys.getenv("CMAKE", unset = "cmake")
+ buildType <- Sys.getenv("CMAKE_BUILD_TYPE", unset = "Release")
+ verbose <- Sys.getenv("VERBOSE", unset = "0")
+
+ cmakeFlags <- c(
+ sprintf("-DCMAKE_BUILD_TYPE=%s", buildType),
+ "-DTBB_TEST=0",
+ "-DTBB_EXAMPLES=0",
+ "-DTBB_STRICT=0",
+ ".."
+ )
+
+ writeLines("*** configuring tbb")
+ owd <- setwd("tbb/build-tbb")
+ output <- system2(cmake, shQuote(cmakeFlags), stdout = TRUE, stderr = TRUE)
+ status <- attr(output, "status")
+ if (is.numeric(status) && status != 0L) {
+ writeLines(output)
+ stop("error configuring tbb (status code ", status, ")")
+ } else if (!identical(verbose, "0")) {
+ writeLines(output)
+ }
+ setwd(owd)
+
+ writeLines("*** building tbb")
+ owd <- setwd("tbb/build-tbb")
+ output <- system2(cmake, c("--build", ".", "--config", "release"), stdout = TRUE, stderr = TRUE)
+ status <- attr(output, "status")
+ if (is.numeric(status) && status != 0L) {
+ writeLines(output)
+ stop("error building tbb (status code ", status, ")")
+ } else if (!identical(verbose, "0")) {
+ writeLines(output)
+ }
+ setwd(owd)
+
+ shlibPattern <- switch(
+ Sys.info()[["sysname"]],
+ Windows = "^tbb.*\\.dll$",
+ Darwin = "^libtbb.*\\.dylib$",
+ "^libtbb.*\\.so.*$"
+ )
+
+ tbbFiles <- list.files(
+ "tbb/build-tbb",
+ pattern = shlibPattern,
+ recursive = TRUE,
+ full.names = TRUE
+ )
+
+ tbbDir <- dirname(tbbFiles[[1L]])
+
+ dir.create("tbb/build", showWarnings = FALSE)
+ file.rename(tbbDir, "tbb/build/lib_release")
+ unlink("tbb/build-tbb", recursive = TRUE)
+ writeLines("*** finished building tbb")
+
+}
+
+
+# Main ----
+
+tbbLib <- Sys.getenv("TBB_LIB")
+tbbInc <- Sys.getenv("TBB_INC")
+
+args <- commandArgs(trailingOnly = TRUE)
+if (identical(args, "build")) {
+ if (nzchar(tbbLib) && nzchar(tbbInc)) {
+ useSystemTbb(tbbLib, tbbInc)
+ } else if (.Platform$OS.type == "windows") {
+ writeLines("** building RcppParallel without tbb backend")
+ } else {
+ useBundledTbb()
+ }
+} else {
+ source("../R/tbb-autodetected.R")
+ .install.libs(tbbLib)
+}
diff --git a/src/install.libs.R.in b/src/install.libs.R.in
deleted file mode 100644
index 20a3d4513..000000000
--- a/src/install.libs.R.in
+++ /dev/null
@@ -1,75 +0,0 @@
-
-# !diagnostics suppress=R_PACKAGE_DIR,SHLIB_EXT,R_ARCH
-.install.libs <- function() {
-
- # get TBB library path
- tbbLib <- "@TBB_LIB@"
-
- # copy default library
- files <- Sys.glob(paste0("*", SHLIB_EXT))
- dest <- file.path(R_PACKAGE_DIR, paste0("libs", R_ARCH))
- dir.create(dest, recursive = TRUE, showWarnings = FALSE)
- file.copy(files, dest, overwrite = TRUE)
-
- # copy symbols if available
- if (file.exists("symbols.rds"))
- file.copy("symbols.rds", dest, overwrite = TRUE)
-
- # also copy to package 'libs' folder, for devtools
- libsDest <- paste0("../libs", R_ARCH)
- dir.create(libsDest, recursive = TRUE, showWarnings = FALSE)
- file.copy(files, libsDest, overwrite = TRUE)
-
- # copy tbb (NOTE: do not use inst/ folder as R will resolve symlinks,
- # behavior which we do _not_ want here!)
- tbbDest <- file.path(R_PACKAGE_DIR, paste0("lib", R_ARCH))
- dir.create(tbbDest, recursive = TRUE, showWarnings = FALSE)
-
- # note: on Linux, TBB gets compiled with extensions like
- # '.so.2', so be ready to handle those
- shlibPattern <- switch(
- Sys.info()[["sysname"]],
- Windows = "^tbb.*\\.dll$",
- Darwin = "^libtbb.*\\.dylib$",
- "^libtbb.*\\.so.*$"
- )
-
- if (!nzchar(tbbLib)) {
-
- # using bundled TBB
- tbbLibs <- list.files(
- path = "tbb/build/lib_release",
- pattern = shlibPattern,
- full.names = TRUE
- )
-
- # don't copy symlinks
- tbbLibs <- tbbLibs[!nzchar(Sys.readlink(tbbLibs))]
-
- # perform the copy
- file.copy(tbbLibs, tbbDest)
-
- } else {
-
- # using system tbb
- tbbLibs <- list.files(
- path = tbbLib,
- pattern = shlibPattern,
- full.names = TRUE
- )
-
- # don't copy symlinks
- tbbLibs <- tbbLibs[!nzchar(Sys.readlink(tbbLibs))]
-
- # copy / link the libraries
- useSymlinks <- Sys.getenv("TBB_USE_SYMLINKS", unset = "TRUE")
- if (useSymlinks)
- file.symlink(tbbLibs, tbbDest)
- else
- file.copy(tbbLibs, tbbDest)
-
- }
-
-}
-
-.install.libs()
diff --git a/src/tbb/.gitignore b/src/tbb/.gitignore
new file mode 100644
index 000000000..a4d040468
--- /dev/null
+++ b/src/tbb/.gitignore
@@ -0,0 +1,62 @@
+# -------- C++ --------
+# Prerequisites
+*.d
+
+# Compiled Object files
+*.slo
+*.lo
+*.o
+*.obj
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Compiled Dynamic libraries
+*.so
+*.so.*
+*.dylib
+*.dll
+
+# Fortran module files
+*.mod
+*.smod
+
+# Compiled Static libraries
+*.lai
+*.la
+*.a
+*.lib
+
+# Executables
+*.exe
+*.out
+*.app
+
+# -------- CMake --------
+CMakeCache.txt
+CMakeFiles
+CMakeScripts
+Testing
+Makefile
+cmake_install.cmake
+install_manifest.txt
+compile_commands.json
+CTestTestfile.cmake
+build/*
+
+# -------- Python --------
+__pycache__/
+*.py[cod]
+*$py.class
+
+# -------- IDE --------
+.vscode/*
+.vs/*
+out/*
+CMakeSettings.json
+
+# -------- CTags --------
+.tags
+.ctags
+
diff --git a/src/tbb/CHANGES b/src/tbb/CHANGES
deleted file mode 100644
index 6e7cb60fd..000000000
--- a/src/tbb/CHANGES
+++ /dev/null
@@ -1,2804 +0,0 @@
-------------------------------------------------------------------------
-The list of most significant changes made over time in
-Intel(R) Threading Building Blocks (Intel(R) TBB).
-
-Intel TBB 2019 Update 8
-TBB_INTERFACE_VERSION == 11008
-
-Changes (w.r.t. Intel TBB 2019 Update 7):
-
-Bugs fixed:
-
-- Fixed a bug in TBB 2019 Update 7 that could lead to incorrect memory
- reallocation on Linux (https://github.com/intel/tbb/issues/148).
-- Fixed enqueuing tbb::task into tbb::task_arena not to fail on threads
- with no task scheduler initialized
- (https://github.com/intel/tbb/issues/116).
-
-------------------------------------------------------------------------
-Intel TBB 2019 Update 7
-TBB_INTERFACE_VERSION == 11007
-
-Changes (w.r.t. Intel TBB 2019 Update 6):
-
-- Added TBBMALLOC_SET_HUGE_SIZE_THRESHOLD parameter to set the lower
- bound for allocations that are not released back to OS unless
- a cleanup is explicitly requested.
-- Added zip_iterator::base() method to get the tuple of underlying
- iterators.
-- Improved async_node to never block a thread that sends a message
- through its gateway.
-- Extended decrement port of the tbb::flow::limiter_node to accept
- messages of integral types.
-- Added support of Windows* to the CMake module TBBInstallConfig.
-- Added packaging of CMake configuration files to TBB packages built
- using build/build.py script
- (https://github.com/intel/tbb/issues/141).
-
-Changes affecting backward compatibility:
-
-- Removed the number_of_decrement_predecessors parameter from the
- constructor of flow::limiter_node. To allow its usage, set
- TBB_DEPRECATED_LIMITER_NODE_CONSTRUCTOR macro to 1.
-
-Preview Features:
-
-- Added ordered associative containers:
- concurrent_{map,multimap,set,multiset} (requires C++11).
-
-Open-source contributions integrated:
-
-- Fixed makefiles to properly obtain the GCC version for GCC 7
- and later (https://github.com/intel/tbb/pull/147) by Timmmm.
-
-------------------------------------------------------------------------
-Intel TBB 2019 Update 6
-TBB_INTERFACE_VERSION == 11006
-
-Changes (w.r.t. Intel TBB 2019 Update 5):
-
-- Added support for Microsoft* Visual Studio* 2019.
-- Added support for enqueuing tbb::task into tbb::task_arena
- (https://github.com/01org/tbb/issues/116).
-- Improved support for allocator propagation on concurrent_hash_map
- assigning and swapping.
-- Improved scalable_allocation_command cleanup operations to release
- more memory buffered by the calling thread.
-- Separated allocation of small and large objects into distinct memory
- regions, which helps to reduce excessive memory caching inside the
- TBB allocator.
-
-Preview Features:
-
-- Removed template class gfx_factory from the flow graph API.
-
-------------------------------------------------------------------------
-Intel TBB 2019 Update 5
-TBB_INTERFACE_VERSION == 11005
-
-Changes (w.r.t. Intel TBB 2019 Update 4):
-
-- Associating a task_scheduler_observer with an implicit or explicit
- task arena is now a fully supported feature.
-- Added a CMake module TBBInstallConfig that allows to generate and
- install CMake configuration files for TBB packages.
- Inspired by Hans Johnson (https://github.com/01org/tbb/pull/119).
-- Added node handles, methods merge() and unsafe_extract() to concurrent
- unordered containers.
-- Added constructors with Compare argument to concurrent_priority_queue
- (https://github.com/01org/tbb/issues/109).
-- Controlling the stack size of worker threads is now supported for
- Universal Windows Platform.
-- Improved tbb::zip_iterator to work with algorithms that swap values
- via iterators.
-- Improved support for user-specified allocators in concurrent_hash_map,
- including construction of allocator-aware data types.
-- For ReaderWriterMutex types, upgrades and downgrades now succeed if
- the mutex is already in the requested state.
- Inspired by Niadb (https://github.com/01org/tbb/pull/122).
-
-Preview Features:
-
-- The task_scheduler_observer::may_sleep() method has been removed.
-
-Bugs fixed:
-
-- Fixed the issue with a pipeline parallel filter executing serially if
- it follows a thread-bound filter.
-- Fixed a performance regression observed when multiple parallel
- algorithms start simultaneously.
-
-------------------------------------------------------------------------
-Intel TBB 2019 Update 4
-TBB_INTERFACE_VERSION == 11004
-
-Changes (w.r.t. Intel TBB 2019 Update 3):
-
-- global_control class is now a fully supported feature.
-- Added deduction guides for tbb containers: concurrent_hash_map,
- concurrent_unordered_map, concurrent_unordered_set.
-- Added tbb::scalable_memory_resource function returning
- std::pmr::memory_resource interface to the TBB memory allocator.
-- Added tbb::cache_aligned_resource class that implements
- std::pmr::memory_resource with cache alignment and no false sharing.
-- Added rml::pool_msize function returning the usable size of a memory
- block allocated from a given memory pool.
-- Added default and copy constructors for tbb::counting_iterator
- and tbb::zip_iterator.
-- Added TBB_malloc_replacement_log function to obtain the status of
- dynamic memory allocation replacement (Windows* only).
-- CMake configuration file now supports release-only and debug-only
- configurations (https://github.com/01org/tbb/issues/113).
-- TBBBuild CMake module takes the C++ version from CMAKE_CXX_STANDARD.
-
-Bugs fixed:
-
-- Fixed compilation for tbb::concurrent_vector when used with
- std::pmr::polymorphic_allocator.
-
-Open-source contributions integrated:
-
-- TBB_INTERFACE_VERSION is included into TBB version in CMake
- configuration (https://github.com/01org/tbb/pull/100)
- by Hans Johnson.
-- Fixed detection of C++17 deduction guides for Visual C++*
- (https://github.com/01org/tbb/pull/112) by Marian Klymov.
-
-------------------------------------------------------------------------
-Intel TBB 2019 Update 3
-TBB_INTERFACE_VERSION == 11003
-
-Changes (w.r.t. Intel TBB 2019 Update 2):
-
-- Added tbb::transform_iterator.
-- Added new Makefile target 'profile' to flow graph examples enabling
- additional support for Intel(R) Parallel Studio XE tools.
-- Added TBB_MALLOC_DISABLE_REPLACEMENT environment variable to switch off
- dynamic memory allocation replacement on Windows*. Inspired by
- a contribution from Edward Lam.
-
-Preview Features:
-
-- Extended flow graph API to support relative priorities for functional
- nodes, specified as an optional parameter to the node constructors.
-
-Open-source contributions integrated:
-
-- Enabled using process-local futex operations
- (https://github.com/01org/tbb/pull/58) by Andrey Semashev.
-
-------------------------------------------------------------------------
-Intel TBB 2019 Update 2
-TBB_INTERFACE_VERSION == 11002
-
-Changes (w.r.t. Intel TBB 2019 Update 1):
-
-- Added overloads for parallel_reduce with default partitioner and
- user-supplied context.
-- Added deduction guides for tbb containers: concurrent_vector,
- concurrent_queue, concurrent_bounded_queue,
- concurrent_priority_queue.
-- Reallocation of memory objects >1MB now copies and frees memory if
- the size is decreased twice or more, trading performance off for
- reduced memory usage.
-- After a period of sleep, TBB worker threads now prefer returning to
- their last used task arena.
-
-Bugs fixed:
-
-- Fixed compilation of task_group.h when targeting macOS* 10.11 or
- earlier (https://github.com/conda-forge/tbb-feedstock/issues/42).
-
-Open-source contributions integrated:
-
-- Added constructors with HashCompare argument to concurrent_hash_map
- (https://github.com/01org/tbb/pull/63) by arewedancer.
-
-------------------------------------------------------------------------
-Intel TBB 2019 Update 1
-TBB_INTERFACE_VERSION == 11001
-
-Changes (w.r.t. Intel TBB 2019):
-
-- Doxygen documentation could be built with 'make doxygen' command now.
-
-Changes affecting backward compatibility:
-
-- Enforced 8 byte alignment for tbb::atomic and
- tbb::atomic. On IA-32 architecture it may cause layout
- changes in structures that use these types.
-
-Bugs fixed:
-
-- Fixed an issue with dynamic memory allocation replacement on Windows*
- occurred for some versions of ucrtbase.dll.
-- Fixed possible deadlock in tbbmalloc cleanup procedure during process
- shutdown. Inspired by a contribution from Edward Lam.
-- Fixed usage of std::uncaught_exception() deprecated in C++17
- (https://github.com/01org/tbb/issues/67).
-- Fixed a crash when a local observer is activated after an arena
- observer.
-- Fixed compilation of task_group.h by Visual C++* 15.7 with
- /permissive- option (https://github.com/01org/tbb/issues/53).
-- Fixed tbb4py to avoid dependency on Intel(R) C++ Compiler shared
- libraries.
-- Fixed compilation for Anaconda environment with GCC 7.3 and higher.
-
-Open-source contributions integrated:
-
-- Fix various warnings when building with Visual C++
- (https://github.com/01org/tbb/pull/70) by Edward Lam.
-
-------------------------------------------------------------------------
-Intel TBB 2019
-TBB_INTERFACE_VERSION == 11000
-
-Changes (w.r.t. Intel TBB 2018 Update 5):
-
-- Lightweight policy for functional nodes in the flow graph is now
- a fully supported feature.
-- Reservation support in flow::write_once_node and flow::overwrite_node
- is now a fully supported feature.
-- Support for Flow Graph Analyzer and improvements for
- Intel(R) VTune(TM) Amplifier become a regular feature enabled by
- TBB_USE_THREADING_TOOLS macro.
-- Added support for std::new_handler in the replacement functions for
- global operator new.
-- Added C++14 constructors to concurrent unordered containers.
-- Added tbb::counting_iterator and tbb::zip_iterator.
-- Fixed multiple -Wextra warnings in TBB source files.
-
-Preview Features:
-
-- Extracting nodes from a flow graph is deprecated and disabled by
- default. To enable, use TBB_DEPRECATED_FLOW_NODE_EXTRACTION macro.
-
-Changes affecting backward compatibility:
-
-- Due to internal changes in the flow graph classes, recompilation is
- recommended for all binaries that use the flow graph.
-
-Open-source contributions integrated:
-
-- Added support for OpenBSD by Anthony J. Bentley.
-
-------------------------------------------------------------------------
-Intel TBB 2018 Update 6
-TBB_INTERFACE_VERSION == 10006
-
-Changes (w.r.t. Intel TBB 2018 Update 5):
-
-Bugs fixed:
-
-- Fixed an issue with dynamic memory allocation replacement on Windows*
- occurred for some versions of ucrtbase.dll.
-
-------------------------------------------------------------------------
-Intel TBB 2018 Update 5
-TBB_INTERFACE_VERSION == 10005
-
-Changes (w.r.t. Intel TBB 2018 Update 4):
-
-Preview Features:
-
-- Added user event tracing API for Intel(R) VTune(TM) Amplifier and
- Flow Graph Analyzer.
-
-Bugs fixed:
-
-- Fixed the memory allocator to properly support transparent huge pages.
-- Removed dynamic exception specifications in tbbmalloc_proxy for C++11
- and later (https://github.com/01org/tbb/issues/41).
-- Added -flifetime-dse=1 option when building with GCC on macOS*
- (https://github.com/01org/tbb/issues/60).
-
-Open-source contributions integrated:
-
-- Added ARMv8 support by Siddhesh Poyarekar.
-- Avoid GCC warnings for clearing an object of non-trivial type
- (https://github.com/01org/tbb/issues/54) by Daniel Arndt.
-
-------------------------------------------------------------------------
-Intel TBB 2018 Update 4
-TBB_INTERFACE_VERSION == 10004
-
-Changes (w.r.t. Intel TBB 2018 Update 3):
-
-Preview Features:
-
-- Improved support for Flow Graph Analyzer and Intel(R) VTune(TM)
- Amplifier in the task scheduler and generic parallel algorithms.
-- Default device set for opencl_node now includes all the devices from
- the first available OpenCL* platform.
-- Added lightweight policy for functional nodes in the flow graph. It
- indicates that the node body has little work and should, if possible,
- be executed immediately upon receiving a message, avoiding task
- scheduling overhead.
-
-------------------------------------------------------------------------
-Intel TBB 2018 Update 3
-TBB_INTERFACE_VERSION == 10003
-
-Changes (w.r.t. Intel TBB 2018 Update 2):
-
-Preview Features:
-
-- Added template class blocked_rangeNd for a generic multi-dimensional
- range (requires C++11). Inspired by a contribution from Jeff Hammond.
-
-Bugs fixed:
-
-- Fixed a crash with dynamic memory allocation replacement on
- Windows* for applications using system() function.
-- Fixed parallel_deterministic_reduce to split range correctly when used
- with static_partitioner.
-- Fixed a synchronization issue in task_group::run_and_wait() which
- caused a simultaneous call to task_group::wait() to return
- prematurely.
-
-------------------------------------------------------------------------
-Intel TBB 2018 Update 2
-TBB_INTERFACE_VERSION == 10002
-
-Changes (w.r.t. Intel TBB 2018 Update 1):
-
-- Added support for Android* NDK r16, macOS* 10.13, Fedora* 26.
-- Binaries for Universal Windows Driver (vc14_uwd) now link with static
- Microsoft* runtime libraries, and are only available in commercial
- releases.
-- Extended flow graph documentation with more code samples.
-
-Preview Features:
-
-- Added a Python* module for multi-processing computations in numeric
- Python* libraries.
-
-Bugs fixed:
-
-- Fixed constructors of concurrent_hash_map to be exception-safe.
-- Fixed auto-initialization in the main thread to be cleaned up at
- shutdown.
-- Fixed a crash when tbbmalloc_proxy is used together with dbghelp.
-- Fixed static_partitioner to assign tasks properly in case of nested
- parallelism.
-
-------------------------------------------------------------------------
-Intel TBB 2018 Update 1
-TBB_INTERFACE_VERSION == 10001
-
-Changes (w.r.t. Intel TBB 2018):
-
-- Added lambda-friendly overloads for parallel_scan.
-- Added support of static and simple partitioners in
- parallel_deterministic_reduce.
-
-Preview Features:
-
-- Added initial support for Flow Graph Analyzer to parallel_for.
-- Added reservation support in overwrite_node and write_once_node.
-
-Bugs fixed:
-
-- Fixed a potential deadlock scenario in the flow graph that affected
- Intel TBB 2018.
-
-------------------------------------------------------------------------
-Intel TBB 2018
-TBB_INTERFACE_VERSION == 10000
-
-Changes (w.r.t. Intel TBB 2017 Update 7):
-
-- Introduced Parallel STL, an implementation of the C++ standard
- library algorithms with support for execution policies. For more
- information, see Getting Started with Parallel STL
- (https://software.intel.com/en-us/get-started-with-pstl).
-- this_task_arena::isolate() function is now a fully supported feature.
-- this_task_arena::isolate() function and task_arena::execute() method
- were extended to pass on the value returned by the executed functor
- (requires C++11).
-- task_arena::enqueue() and task_group::run() methods extended to accept
- move-only functors.
-- A flow graph now spawns all tasks into the same task arena,
- and waiting for graph completion also happens in that arena.
-- Improved support for Flow Graph Analyzer in async_node, opencl_node,
- and composite_node.
-- Added support for Android* NDK r15, r15b.
-- Added support for Universal Windows Platform.
-- Increased minimally supported version of macOS*
- (MACOSX_DEPLOYMENT_TARGET) to 10.11.
-
-Changes affecting backward compatibility:
-
-- Internal layout changes in some flow graph classes;
-- Several undocumented methods are removed from class graph,
- including set_active() and is_active().
-- Due to incompatible changes, the namespace version is updated
- for the flow graph; recompilation is recommended for all
- binaries that use the flow graph classes.
-
-Preview Features:
-
-- opencl_node can be used with any graph object; class opencl_graph
- is removed.
-- graph::wait_for_all() now automatically waits for all not yet consumed
- async_msg objects.
-- Improved concurrent_lru_cache::handle_object to support C++11 move
- semantics, default construction, and conversion to bool.
-
-Bugs fixed:
-
-- Fixed a bug preventing use of streaming_node and opencl_node with
- Clang; inspired by a contribution from Francisco Facioni.
-- Fixed this_task_arena::isolate() function to work correctly with
- parallel_invoke and parallel_do algorithms.
-- Fixed a memory leak in composite_node.
-- Fixed an assertion failure in debug tbbmalloc binaries when
- TBBMALLOC_CLEAN_ALL_BUFFERS is used.
-
-------------------------------------------------------------------------
-Intel TBB 2017 Update 8
-TBB_INTERFACE_VERSION == 9108
-
-Changes (w.r.t. Intel TBB 2017 Update 7):
-
-Bugs fixed:
-
-- Fixed an assertion failure in debug tbbmalloc binaries when
- TBBMALLOC_CLEAN_ALL_BUFFERS is used.
-
-------------------------------------------------------------------------
-Intel TBB 2017 Update 7
-TBB_INTERFACE_VERSION == 9107
-
-Changes (w.r.t. Intel TBB 2017 Update 6):
-
-- In the huge pages mode, the memory allocator now is also able to use
- transparent huge pages.
-
-Preview Features:
-
-- Added support for Intel TBB integration into CMake-aware
- projects, with valuable guidance and feedback provided by Brad King
- (Kitware).
-
-Bugs fixed:
-
-- Fixed scalable_allocation_command(TBBMALLOC_CLEAN_ALL_BUFFERS, 0)
- to process memory left after exited threads.
-
-------------------------------------------------------------------------
-Intel TBB 2017 Update 6
-TBB_INTERFACE_VERSION == 9106
-
-Changes (w.r.t. Intel TBB 2017 Update 5):
-
-- Added support for Android* NDK r14.
-
-Preview Features:
-
-- Added a blocking terminate extension to the task_scheduler_init class
- that allows an object to wait for termination of worker threads.
-
-Bugs fixed:
-
-- Fixed compilation and testing issues with MinGW (GCC 6).
-- Fixed compilation with /std:c++latest option of VS 2017
- (https://github.com/01org/tbb/issues/13).
-
-------------------------------------------------------------------------
-Intel TBB 2017 Update 5
-TBB_INTERFACE_VERSION == 9105
-
-Changes (w.r.t. Intel TBB 2017 Update 4):
-
-- Added support for Microsoft* Visual Studio* 2017.
-- Added graph/matmult example to demonstrate support for compute offload
- to Intel(R) Graphics Technology in the flow graph API.
-- The "compiler" build option now allows to specify a full path to the
- compiler.
-
-Changes affecting backward compatibility:
-
-- Constructors for many classes, including graph nodes, concurrent
- containers, thread-local containers, etc., are declared explicit and
- cannot be used for implicit conversions anymore.
-
-Bugs fixed:
-
-- Added a workaround for bug 16657 in the GNU C Library (glibc)
- affecting the debug version of tbb::mutex.
-- Fixed a crash in pool_identify() called for an object allocated in
- another thread.
-
-------------------------------------------------------------------------
-Intel TBB 2017 Update 4
-TBB_INTERFACE_VERSION == 9104
-
-Changes (w.r.t. Intel TBB 2017 Update 3):
-
-- Added support for C++11 move semantics in parallel_do.
-- Added support for FreeBSD* 11.
-
-Changes affecting backward compatibility:
-
-- Minimal compiler versions required for support of C++11 move semantics
- raised to GCC 4.5, VS 2012, and Intel(R) C++ Compiler 14.0.
-
-Bugs fixed:
-
-- The workaround for crashes in the library compiled with GCC 6
- (-flifetime-dse=1) was extended to Windows*.
-
-------------------------------------------------------------------------
-Intel TBB 2017 Update 3
-TBB_INTERFACE_VERSION == 9103
-
-Changes (w.r.t. Intel TBB 2017 Update 2):
-
-- Added support for Android* 7.0 and Android* NDK r13, r13b.
-
-Preview Features:
-
-- Added template class gfx_factory to the flow graph API. It implements
- the Factory concept for streaming_node to offload computations to
- Intel(R) processor graphics.
-
-Bugs fixed:
-
-- Fixed a possible deadlock caused by missed wakeup signals in
- task_arena::execute().
-
-Open-source contributions integrated:
-
-- A build fix for Linux* s390x platform by Jerry J.
-
-------------------------------------------------------------------------
-Intel TBB 2017 Update 2
-TBB_INTERFACE_VERSION == 9102
-
-Changes (w.r.t. Intel TBB 2017 Update 1):
-
-- Removed the long-outdated support for Xbox* consoles.
-
-Bugs fixed:
-
-- Fixed the issue with task_arena::execute() not being processed when
- the calling thread cannot join the arena.
-- Fixed dynamic memory allocation replacement failure on macOS* 10.12.
-
-------------------------------------------------------------------------
-Intel TBB 2017 Update 1
-TBB_INTERFACE_VERSION == 9101
-
-Changes (w.r.t. Intel TBB 2017):
-
-Bugs fixed:
-
-- Fixed dynamic memory allocation replacement failures on Windows* 10
- Anniversary Update.
-- Fixed emplace() method of concurrent unordered containers to not
- require a copy constructor.
-
-------------------------------------------------------------------------
-Intel TBB 2017
-TBB_INTERFACE_VERSION == 9100
-
-Changes (w.r.t. Intel TBB 4.4 Update 5):
-
-- static_partitioner class is now a fully supported feature.
-- async_node class is now a fully supported feature.
-- Improved dynamic memory allocation replacement on Windows* OS to skip
- DLLs for which replacement cannot be done, instead of aborting.
-- Intel TBB no longer performs dynamic memory allocation replacement
- for Microsoft* Visual Studio* 2008.
-- For 64-bit platforms, quadrupled the worst-case limit on the amount
- of memory the Intel TBB allocator can handle.
-- Added TBB_USE_GLIBCXX_VERSION macro to specify the version of GNU
- libstdc++ when it cannot be properly recognized, e.g. when used
- with Clang on Linux* OS. Inspired by a contribution from David A.
-- Added graph/stereo example to demonstrate tbb::flow::async_msg.
-- Removed a few cases of excessive user data copying in the flow graph.
-- Reworked split_node to eliminate unnecessary overheads.
-- Added support for C++11 move semantics to the argument of
- tbb::parallel_do_feeder::add() method.
-- Added C++11 move constructor and assignment operator to
- tbb::combinable template class.
-- Added tbb::this_task_arena::max_concurrency() function and
- max_concurrency() method of class task_arena returning the maximal
- number of threads that can work inside an arena.
-- Deprecated tbb::task_arena::current_thread_index() static method;
- use tbb::this_task_arena::current_thread_index() function instead.
-- All examples for commercial version of library moved online:
- https://software.intel.com/en-us/product-code-samples. Examples are
- available as a standalone package or as a part of Intel(R) Parallel
- Studio XE or Intel(R) System Studio Online Samples packages.
-
-Changes affecting backward compatibility:
-
-- Renamed following methods and types in async_node class:
- Old New
- async_gateway_type => gateway_type
- async_gateway() => gateway()
- async_try_put() => try_put()
- async_reserve() => reserve_wait()
- async_commit() => release_wait()
-- Internal layout of some flow graph nodes has changed; recompilation
- is recommended for all binaries that use the flow graph.
-
-Preview Features:
-
-- Added template class streaming_node to the flow graph API. It allows
- a flow graph to offload computations to other devices through
- streaming or offloading APIs.
-- Template class opencl_node reimplemented as a specialization of
- streaming_node that works with OpenCL*.
-- Added tbb::this_task_arena::isolate() function to isolate execution
- of a group of tasks or an algorithm from other tasks submitted
- to the scheduler.
-
-Bugs fixed:
-
-- Added a workaround for GCC bug #62258 in std::rethrow_exception()
- to prevent possible problems in case of exception propagation.
-- Fixed parallel_scan to provide correct result if the initial value
- of an accumulator is not the operation identity value.
-- Fixed a memory corruption in the memory allocator when it meets
- internal limits.
-- Fixed the memory allocator on 64-bit platforms to align memory
- to 16 bytes by default for all allocations bigger than 8 bytes.
-- As a workaround for crashes in the Intel TBB library compiled with
- GCC 6, added -flifetime-dse=1 to compilation options on Linux* OS.
-- Fixed a race in the flow graph implementation.
-
-Open-source contributions integrated:
-
-- Enabling use of C++11 'override' keyword by Raf Schietekat.
-
-------------------------------------------------------------------------
-Intel TBB 4.4 Update 6
-TBB_INTERFACE_VERSION == 9006
-
-Changes (w.r.t. Intel TBB 4.4 Update 5):
-
-- For 64-bit platforms, quadrupled the worst-case limit on the amount
- of memory the Intel TBB allocator can handle.
-
-Bugs fixed:
-
-- Fixed a memory corruption in the memory allocator when it meets
- internal limits.
-- Fixed the memory allocator on 64-bit platforms to align memory
- to 16 bytes by default for all allocations bigger than 8 bytes.
-- Fixed parallel_scan to provide correct result if the initial value
- of an accumulator is not the operation identity value.
-- As a workaround for crashes in the Intel TBB library compiled with
- GCC 6, added -flifetime-dse=1 to compilation options on Linux* OS.
-
-------------------------------------------------------------------------
-Intel TBB 4.4 Update 5
-TBB_INTERFACE_VERSION == 9005
-
-Changes (w.r.t. Intel TBB 4.4 Update 4):
-
-- Modified graph/fgbzip2 example to remove unnecessary data queuing.
-
-Preview Features:
-
-- Added a Python* module which is able to replace Python's thread pool
- class with the implementation based on Intel TBB task scheduler.
-
-Bugs fixed:
-
-- Fixed the implementation of 64-bit tbb::atomic for IA-32 architecture
- to work correctly with GCC 5.2 in C++11/14 mode.
-- Fixed a possible crash when tasks with affinity (e.g. specified via
- affinity_partitioner) are used simultaneously with task priority
- changes.
-
-------------------------------------------------------------------------
-Intel TBB 4.4 Update 4
-TBB_INTERFACE_VERSION == 9004
-
-Changes (w.r.t. Intel TBB 4.4 Update 3):
-
-- Removed a few cases of excessive user data copying in the flow graph.
-- Improved robustness of concurrent_bounded_queue::abort() in case of
- simultaneous push and pop operations.
-
-Preview Features:
-
-- Added tbb::flow::async_msg, a special message type to support
- communications between the flow graph and external asynchronous
- activities.
-- async_node modified to support use with C++03 compilers.
-
-Bugs fixed:
-
-- Fixed a bug in dynamic memory allocation replacement for Windows* OS.
-- Fixed excessive memory consumption on Linux* OS caused by enabling
- zero-copy realloc.
-- Fixed performance regression on Intel(R) Xeon Phi(tm) coprocessor with
- auto_partitioner.
-
-------------------------------------------------------------------------
-Intel TBB 4.4 Update 3
-TBB_INTERFACE_VERSION == 9003
-
-Changes (w.r.t. Intel TBB 4.4 Update 2):
-
-- Modified parallel_sort to not require a default constructor for values
- and to use iter_swap() for value swapping.
-- Added support for creating or initializing a task_arena instance that
- is connected to the arena currently used by the thread.
-- graph/binpack example modified to use multifunction_node.
-- For performance analysis, use Intel(R) VTune(TM) Amplifier XE 2015
- and higher; older versions are no longer supported.
-- Improved support for compilation with disabled RTTI, by omitting its use
- in auxiliary code, such as assertions. However some functionality,
- particularly the flow graph, does not work if RTTI is disabled.
-- The tachyon example for Android* can be built using Android Studio 1.5
- and higher with experimental Gradle plugin 0.4.0.
-
-Preview Features:
-
-- Added class opencl_subbufer that allows using OpenCL* sub-buffer
- objects with opencl_node.
-- Class global_control supports the value of 1 for
- max_allowed_parallelism.
-
-Bugs fixed:
-
-- Fixed a race causing "TBB Warning: setaffinity syscall failed" message.
-- Fixed a compilation issue on OS X* with Intel(R) C++ Compiler 15.0.
-- Fixed a bug in queuing_rw_mutex::downgrade() that could temporarily
- block new readers.
-- Fixed speculative_spin_rw_mutex to stop using the lazy subscription
- technique due to its known flaws.
-- Fixed memory leaks in the tool support code.
-
-------------------------------------------------------------------------
-Intel TBB 4.4 Update 2
-TBB_INTERFACE_VERSION == 9002
-
-Changes (w.r.t. Intel TBB 4.4 Update 1):
-
-- Improved interoperability with Intel(R) OpenMP RTL (libiomp) on Linux:
- OpenMP affinity settings do not affect the default number of threads
- used in the task scheduler. Intel(R) C++ Compiler 16.0 Update 1
- or later is required.
-- Added a new flow graph example with different implementations of the
- Cholesky Factorization algorithm.
-
-Preview Features:
-
-- Added template class opencl_node to the flow graph API. It allows a
- flow graph to offload computations to OpenCL* devices.
-- Extended join_node to use type-specified message keys. It simplifies
- the API of the node by obtaining message keys via functions
- associated with the message type (instead of node ports).
-- Added static_partitioner that minimizes overhead of parallel_for and
- parallel_reduce for well-balanced workloads.
-- Improved template class async_node in the flow graph API to support
- user settable concurrency limits.
-
-Bugs fixed:
-
-- Fixed a possible crash in the GUI layer for library examples on Linux.
-
-------------------------------------------------------------------------
-Intel TBB 4.4 Update 1
-TBB_INTERFACE_VERSION == 9001
-
-Changes (w.r.t. Intel TBB 4.4):
-
-- Added support for Microsoft* Visual Studio* 2015.
-- Intel TBB no longer performs dynamic replacement of memory allocation
- functions for Microsoft Visual Studio 2005 and earlier versions.
-- For GCC 4.7 and higher, the intrinsics-based platform isolation layer
- uses __atomic_* built-ins instead of the legacy __sync_* ones.
- This change is inspired by a contribution from Mathieu Malaterre.
-- Improvements in task_arena:
- Several application threads may join a task_arena and execute tasks
- simultaneously. The amount of concurrency reserved for application
- threads at task_arena construction can be set to any value between
- 0 and the arena concurrency limit.
-- The fractal example was modified to demonstrate class task_arena
- and moved to examples/task_arena/fractal.
-
-Bugs fixed:
-
-- Fixed a deadlock during destruction of task_scheduler_init objects
- when one of destructors is set to wait for worker threads.
-- Added a workaround for a possible crash on OS X* when dynamic memory
- allocator replacement (libtbbmalloc_proxy) is used and memory is
- released during application startup.
-- Usage of mutable functors with task_group::run_and_wait() and
- task_arena::enqueue() is disabled. An attempt to pass a functor
- which operator()() is not const will produce compilation errors.
-- Makefiles and environment scripts now properly recognize GCC 5.0 and
- higher.
-
-Open-source contributions integrated:
-
-- Improved performance of parallel_for_each for inputs allowing random
- access, by Raf Schietekat.
-
-------------------------------------------------------------------------
-Intel TBB 4.4
-TBB_INTERFACE_VERSION == 9000
-
-Changes (w.r.t. Intel TBB 4.3 Update 6):
-
-- The following features are now fully supported:
- tbb::flow::composite_node;
- additional policies of tbb::flow::graph_node::reset().
-- Platform abstraction layer for Windows* OS updated to use compiler
- intrinsics for most atomic operations.
-- The tbb/compat/thread header updated to automatically include
- C++11 where available.
-- Fixes and refactoring in the task scheduler and class task_arena.
-- Added key_matching policy to tbb::flow::join_node, which removes
- the restriction on the type that can be compared-against.
-- For tag_matching join_node, tag_value is redefined to be 64 bits
- wide on all architectures.
-- Expanded the documentation for the flow graph with details about
- node semantics and behavior.
-- Added dynamic replacement of C11 standard function aligned_alloc()
- under Linux* OS.
-- Added C++11 move constructors and assignment operators to
- tbb::enumerable_thread_specific container.
-- Added hashing support for tbb::tbb_thread::id.
-- On OS X*, binaries that depend on libstdc++ are not provided anymore.
- In the makefiles, libc++ is now used by default; for building with
- libstdc++, specify stdlib=libstdc++ in the make command line.
-
-Preview Features:
-
-- Added a new example, graph/fgbzip2, that shows usage of
- tbb::flow::async_node.
-- Modification to the low-level API for memory pools:
- added a function for finding a memory pool by an object allocated
- from that pool.
-- tbb::memory_pool now does not request memory till the first allocation
- from the pool.
-
-Changes affecting backward compatibility:
-
-- Internal layout of flow graph nodes has changed; recompilation is
- recommended for all binaries that use the flow graph.
-- Resetting a tbb::flow::source_node will immediately activate it,
- unless it was created in inactive state.
-
-Bugs fixed:
-
-- Failure at creation of a memory pool will not cause process
- termination anymore.
-
-Open-source contributions integrated:
-
-- Supported building TBB with Clang on AArch64 with use of built-in
- intrinsics by David A.
-
-------------------------------------------------------------------------
-Intel TBB 4.3 Update 6
-TBB_INTERFACE_VERSION == 8006
-
-Changes (w.r.t. Intel TBB 4.3 Update 5):
-
-- Supported zero-copy realloc for objects >1MB under Linux* via
- mremap system call.
-- C++11 move-aware insert and emplace methods have been added to
- concurrent_hash_map container.
-- install_name is set to @rpath/ on OS X*.
-
-Preview Features:
-
-- Added template class async_node to the flow graph API. It allows a
- flow graph to communicate with an external activity managed by
- the user or another runtime.
-- Improved speed of flow::graph::reset() clearing graph edges.
- rf_extract flag has been renamed rf_clear_edges.
-- extract() method of graph nodes now takes no arguments.
-
-Bugs fixed:
-
-- concurrent_unordered_{set,map} behaves correctly for degenerate
- hashes.
-- Fixed a race condition in the memory allocator that may lead to
- excessive memory consumption under high multithreading load.
-
-------------------------------------------------------------------------
-Intel TBB 4.3 Update 5
-TBB_INTERFACE_VERSION == 8005
-
-Changes (w.r.t. Intel TBB 4.3 Update 4):
-
-- Added add_ref_count() method of class tbb::task.
-
-Preview Features:
-
-- Added class global_control for application-wide control of allowed
- parallelism and thread stack size.
-- memory_pool_allocator now throws the std::bad_alloc exception on
- allocation failure.
-- Exceptions thrown for by memory pool constructors changed from
- std::bad_alloc to std::invalid_argument and std::runtime_error.
-
-Bugs fixed:
-
-- scalable_allocator now throws the std::bad_alloc exception on
- allocation failure.
-- Fixed a race condition in the memory allocator that may lead to
- excessive memory consumption under high multithreading load.
-- A new scheduler created right after destruction of the previous one
- might be unable to modify the number of worker threads.
-
-Open-source contributions integrated:
-
-- (Added but not enabled) push_front() method of class tbb::task_list
- by Raf Schietekat.
-
-------------------------------------------------------------------------
-Intel TBB 4.3 Update 4
-TBB_INTERFACE_VERSION == 8004
-
-Changes (w.r.t. Intel TBB 4.3 Update 3):
-
-- Added a C++11 variadic constructor for enumerable_thread_specific.
- The arguments from this constructor are used to construct
- thread-local values.
-- Improved exception safety for enumerable_thread_specific.
-- Added documentation for tbb::flow::tagged_msg class and
- tbb::flow::output_port function.
-- Fixed build errors for systems that do not support dynamic linking.
-- C++11 move-aware insert and emplace methods have been added to
- concurrent unordered containers.
-
-Preview Features:
-
-- Interface-breaking change: typedefs changed for node predecessor and
- successor lists, affecting copy_predecessors and copy_successors
- methods.
-- Added template class composite_node to the flow graph API. It packages
- a subgraph to represent it as a first-class flow graph node.
-- make_edge and remove_edge now accept multiport nodes as arguments,
- automatically using the node port with index 0 for an edge.
-
-Open-source contributions integrated:
-
-- Draft code for enumerable_thread_specific constructor with multiple
- arguments (see above) by Adrien Guinet.
-- Fix for GCC invocation on IBM* Blue Gene*
- by Jeff Hammond and Raf Schietekat.
-- Extended testing with smart pointers for Clang & libc++
- by Raf Schietekat.
-
-------------------------------------------------------------------------
-Intel TBB 4.3 Update 3
-TBB_INTERFACE_VERSION == 8003
-
-Changes (w.r.t. Intel TBB 4.3 Update 2):
-
-- Move constructor and assignment operator were added to unique_lock.
-
-Preview Features:
-
-- Time overhead for memory pool destruction was reduced.
-
-Open-source contributions integrated:
-
-- Build error fix for iOS* by Raf Schietekat.
-
-------------------------------------------------------------------------
-Intel TBB 4.3 Update 2
-TBB_INTERFACE_VERSION == 8002
-
-Changes (w.r.t. Intel TBB 4.3 Update 1):
-
-- Binary files for 64-bit Android* applications were added as part of the
- Linux* OS package.
-- Exact exception propagation is enabled for Intel C++ Compiler on OS X*.
-- concurrent_vector::shrink_to_fit was optimized for types that support
- C++11 move semantics.
-
-Bugs fixed:
-
-- Fixed concurrent unordered containers to insert elements much faster
- in debug mode.
-- Fixed concurrent priority queue to support types that do not have
- copy constructors.
-- Fixed enumerable_thread_specific to forbid copying from an instance
- with a different value type.
-
-Open-source contributions integrated:
-
-- Support for PathScale* EKOPath* Compiler by Erik Lindahl.
-
-------------------------------------------------------------------------
-Intel TBB 4.3 Update 1
-TBB_INTERFACE_VERSION == 8001
-
-Changes (w.r.t. Intel TBB 4.3):
-
-- The ability to split blocked_ranges in a proportion, used by
- affinity_partitioner since version 4.2 Update 4, became a formal
- extension of the Range concept.
-- More checks for an incorrect address to release added to the debug
- version of the memory allocator.
-- Different kind of solutions for each TBB example were merged.
-
-Preview Features:
-
-- Task priorities are re-enabled in preview binaries.
-
-Bugs fixed:
-
-- Fixed a duplicate symbol when TBB_PREVIEW_VARIADIC_PARALLEL_INVOKE is
- used in multiple compilation units.
-- Fixed a crash in __itt_fini_ittlib seen on Ubuntu 14.04.
-- Fixed a crash in memory release after dynamic replacement of the
- OS X* memory allocator.
-- Fixed incorrect indexing of arrays in seismic example.
-- Fixed a data race in lazy initialization of task_arena.
-
-Open-source contributions integrated:
-
-- Fix for dumping information about gcc and clang compiler versions
- by Misty De Meo.
-
-------------------------------------------------------------------------
-Intel TBB 4.3
-TBB_INTERFACE_VERSION == 8000
-
-Changes (w.r.t. Intel TBB 4.2 Update 5):
-
-- The following features are now fully supported: flow::indexer_node,
- task_arena, speculative_spin_rw_mutex.
-- Compatibility with C++11 standard improved for tbb/compat/thread
- and tbb::mutex.
-- C++11 move constructors have been added to concurrent_queue and
- concurrent_bounded_queue.
-- C++11 move constructors and assignment operators have been added to
- concurrent_vector, concurrent_hash_map, concurrent_priority_queue,
- concurrent_unordered_{set,multiset,map,multimap}.
-- C++11 move-aware emplace/push/pop methods have been added to
- concurrent_vector, concurrent_queue, concurrent_bounded_queue,
- concurrent_priority_queue.
-- Methods to insert a C++11 initializer list have been added:
- concurrent_vector::grow_by(), concurrent_hash_map::insert(),
- concurrent_unordered_{set,multiset,map,multimap}::insert().
-- Testing for compatibility of containers with some C++11 standard
- library types has been added.
-- Dynamic replacement of standard memory allocation routines has been
- added for OS X*.
-- Microsoft* Visual Studio* projects for Intel TBB examples updated
- to VS 2010.
-- For open-source packages, debugging information (line numbers) in
- precompiled binaries now matches the source code.
-- Debug information was added to release builds for OS X*, Solaris*,
- FreeBSD* operating systems and MinGW*.
-- Various improvements in documentation, debug diagnostics and examples.
-
-Preview Features:
-
-- Additional actions on reset of graphs, and extraction of individual
- nodes from a graph (TBB_PREVIEW_FLOW_GRAPH_FEATURES).
-- Support for an arbitrary number of arguments in parallel_invoke
- (TBB_PREVIEW_VARIADIC_PARALLEL_INVOKE).
-
-Changes affecting backward compatibility:
-
-- For compatibility with C++11 standard, copy and move constructors and
- assignment operators are disabled for all mutex classes. To allow
- the old behavior, use TBB_DEPRECATED_MUTEX_COPYING macro.
-- flow::sequencer_node rejects messages with repeating sequence numbers.
-- Changed internal interface between tbbmalloc and tbbmalloc_proxy.
-- Following deprecated functionality has been removed:
- old debugging macros TBB_DO_ASSERT & TBB_DO_THREADING_TOOLS;
- no-op depth-related methods in class task;
- tbb::deprecated::concurrent_queue;
- deprecated variants of concurrent_vector methods.
-- register_successor() and remove_successor() are deprecated as methods
- to add and remove edges in flow::graph; use make_edge() and
- remove_edge() instead.
-
-Bugs fixed:
-
-- Fixed incorrect scalable_msize() implementation for aligned objects.
-- Flow graph buffering nodes now destroy their copy of forwarded items.
-- Multiple fixes in task_arena implementation, including for:
- inconsistent task scheduler state inside executed functions;
- incorrect floating-point settings and exception propagation;
- possible stalls in concurrent invocations of execute().
-- Fixed floating-point settings propagation when the same instance of
- task_group_context is used in different arenas.
-- Fixed compilation error in pipeline.h with Intel Compiler on OS X*.
-- Added missed headers for individual components to tbb.h.
-
-Open-source contributions integrated:
-
-- Range interface addition to parallel_do, parallel_for_each and
- parallel_sort by Stephan Dollberg.
-- Variadic template implementation of parallel_invoke
- by Kizza George Mbidde (see Preview Features).
-- Improvement in Seismic example for MacBook Pro* with Retina* display
- by Raf Schietekat.
-
-------------------------------------------------------------------------
-Intel TBB 4.2 Update 5
-TBB_INTERFACE_VERSION == 7005
-
-Changes (w.r.t. Intel TBB 4.2 Update 4):
-
-- The second template argument of class aligned_space now is set
- to 1 by default.
-
-Preview Features:
-
-- Better support for exception safety, task priorities and floating
- point settings in class task_arena.
-- task_arena::current_slot() has been renamed to
- task_arena::current_thread_index().
-
-Bugs fixed:
-
-- Task priority change possibly ignored by a worker thread entering
- a nested parallel construct.
-- Memory leaks inside the task scheduler when running on
- Intel(R) Xeon Phi(tm) coprocessor.
-
-Open-source contributions integrated:
-
-- Improved detection of X Window support for Intel TBB examples
- and other feedback by Raf Schietekat.
-
-------------------------------------------------------------------------
-Intel TBB 4.2 Update 4
-TBB_INTERFACE_VERSION == 7004
-
-Changes (w.r.t. Intel TBB 4.2 Update 3):
-
-- Added possibility to specify floating-point settings at invocation
- of most parallel algorithms (including flow::graph) via
- task_group_context.
-- Added dynamic replacement of malloc_usable_size() under
- Linux*/Android* and dlmalloc_usable_size() under Android*.
-- Added new methods to concurrent_vector:
- grow_by() that appends a sequence between two given iterators;
- grow_to_at_least() that initializes new elements with a given value.
-- Improved affinity_partitioner for better performance on balanced
- workloads.
-- Improvements in the task scheduler, including better scalability
- when threads search for a task arena, and better diagnostics.
-- Improved allocation performance for workloads that do intensive
- allocation/releasing of same-size objects larger than ~8KB from
- multiple threads.
-- Exception support is enabled by default for 32-bit MinGW compilers.
-- The tachyon example for Android* can be built for all targets
- supported by the installed NDK.
-- Added Windows Store* version of the tachyon example.
-- GettingStarted/sub_string_finder example ported to offload execution
- on Windows* for Intel(R) Many Integrated Core Architecture.
-
-Preview Features:
-
-- Removed task_scheduler_observer::on_scheduler_leaving() callback.
-- Added task_scheduler_observer::may_sleep() callback.
-- The CPF or_node has been renamed indexer_node. The input to
- indexer_node is now a list of types. The output of indexer_node is
- a tagged_msg type composed of a tag and a value. For indexer_node,
- the tag is a size_t.
-
-Bugs fixed:
-
-- Fixed data races in preview extensions of task_scheduler_observer.
-- Added noexcept(false) for destructor of task_group_base to avoid
- crash on cancellation of structured task group in C++11.
-
-Open-source contributions integrated:
-
-- Improved concurrency detection for BG/Q, and other improvements
- by Raf Schietekat.
-- Fix for crashes in enumerable_thread_specific in case if a contained
- object is too big to be constructed on the stack by Adrien Guinet.
-
-------------------------------------------------------------------------
-Intel TBB 4.2 Update 3
-TBB_INTERFACE_VERSION == 7003
-
-Changes (w.r.t. Intel TBB 4.2 Update 2):
-
-- Added support for Microsoft* Visual Studio* 2013.
-- Improved Microsoft* PPL-compatible form of parallel_for for better
- support of auto-vectorization.
-- Added a new example for cancellation and reset in the flow graph:
- Kohonen self-organizing map (examples/graph/som).
-- Various improvements in source code, tests, and makefiles.
-
-Bugs fixed:
-
-- Added dynamic replacement of _aligned_msize() previously missed.
-- Fixed task_group::run_and_wait() to throw invalid_multiple_scheduling
- exception if the specified task handle is already scheduled.
-
-Open-source contributions integrated:
-
-- A fix for ARM* processors by Steve Capper.
-- Improvements in std::swap calls by Robert Maynard.
-
-------------------------------------------------------------------------
-Intel TBB 4.2 Update 2
-TBB_INTERFACE_VERSION == 7002
-
-Changes (w.r.t. Intel TBB 4.2 Update 1):
-
-- Enable C++11 features for Microsoft* Visual Studio* 2013 Preview.
-- Added a test for compatibility of TBB containers with C++11
- range-based for loop.
-
-Changes affecting backward compatibility:
-
-- Internal layout changed for class tbb::flow::limiter_node.
-
-Preview Features:
-
-- Added speculative_spin_rw_mutex, a read-write lock class which uses
- Intel(R) Transactional Synchronization Extensions.
-
-Bugs fixed:
-
-- When building for Intel(R) Xeon Phi(tm) coprocessor, TBB programs
- no longer require explicit linking with librt and libpthread.
-
-Open-source contributions integrated:
-
-- Fixes for ARM* processors by Steve Capper, Leif Lindholm
- and Steven Noonan.
-- Support for Clang on Linux by Raf Schietekat.
-- Typo correction in scheduler.cpp by Julien Schueller.
-
-------------------------------------------------------------------------
-Intel TBB 4.2 Update 1
-TBB_INTERFACE_VERSION == 7001
-
-Changes (w.r.t. Intel TBB 4.2):
-
-- Added project files for Microsoft* Visual Studio* 2010.
-- Initial support of Microsoft* Visual Studio* 2013 Preview.
-- Enable C++11 features available in Intel(R) C++ Compiler 14.0.
-- scalable_allocation_mode(TBBMALLOC_SET_SOFT_HEAP_LIMIT, ) can be
- used to urge releasing memory from tbbmalloc internal buffers when
- the given limit is exceeded.
-
-Preview Features:
-
-- Class task_arena no longer requires linking with a preview library,
- though still remains a community preview feature.
-- The method task_arena::wait_until_empty() is removed.
-- The method task_arena::current_slot() now returns -1 if
- the task scheduler is not initialized in the thread.
-
-Changes affecting backward compatibility:
-
-- Because of changes in internal layout of graph nodes, the namespace
- interface number of flow::graph has been incremented from 6 to 7.
-
-Bugs fixed:
-
-- Fixed a race in lazy initialization of task_arena.
-- Fixed flow::graph::reset() to prevent situations where tasks would be
- spawned in the process of resetting the graph to its initial state.
-- Fixed decrement bug in limiter_node.
-- Fixed a race in arc deletion in the flow graph.
-
-Open-source contributions integrated:
-
-- Improved support for IBM* Blue Gene* by Raf Schietekat.
-
-------------------------------------------------------------------------
-Intel TBB 4.2
-TBB_INTERFACE_VERSION == 7000
-
-Changes (w.r.t. Intel TBB 4.1 Update 4):
-
-- Added speculative_spin_mutex, which uses Intel(R) Transactional
- Synchronization Extensions when they are supported by hardware.
-- Binary files linked with libc++ (the C++ standard library in Clang)
- were added on OS X*.
-- For OS X* exact exception propagation is supported with Clang;
- it requires use of libc++ and corresponding Intel TBB binaries.
-- Support for C++11 initializer lists in constructor and assignment
- has been added to concurrent_hash_map, concurrent_unordered_set,
- concurrent_unordered_multiset, concurrent_unordered_map,
- concurrent_unordered_multimap.
-- The memory allocator may now clean its per-thread memory caches
- when it cannot get more memory.
-- Added the scalable_allocation_command() function for on-demand
- cleaning of internal memory caches.
-- Reduced the time overhead for freeing memory objects smaller than ~8K.
-- Simplified linking with the debug library for applications that use
- Intel TBB in code offloaded to Intel(R) Xeon Phi(tm) coprocessors.
- See an example in
- examples/GettingStarted/sub_string_finder/Makefile.
-- Various improvements in source code, scripts and makefiles.
-
-Changes affecting backward compatibility:
-
-- tbb::flow::graph has been modified to spawn its tasks;
- the old behaviour (task enqueuing) is deprecated. This change may
- impact applications that expected a flow graph to make progress
- without calling wait_for_all(), which is no longer guaranteed. See
- the documentation for more details.
-- Changed the return values of the scalable_allocation_mode() function.
-
-Bugs fixed:
-
-- Fixed a leak of parallel_reduce body objects when execution is
- cancelled or an exception is thrown, as suggested by Darcy Harrison.
-- Fixed a race in the task scheduler which can lower the effective
- priority despite the existence of higher priority tasks.
-- On Linux an error during destruction of the internal thread local
- storage no longer results in an exception.
-
-Open-source contributions integrated:
-
-- Fixed task_group_context state propagation to unrelated context trees
- by Raf Schietekat.
-
-------------------------------------------------------------------------
-Intel TBB 4.1 Update 4
-TBB_INTERFACE_VERSION == 6105
-
-Changes (w.r.t. Intel TBB 4.1 Update 3):
-
-- Use /volatile:iso option with VS 2012 to disable extended
- semantics for volatile variables.
-- Various improvements in affinity_partitioner, scheduler,
- tests, examples, makefiles.
-- Concurrent_priority_queue class now supports initialization/assignment
- via C++11 initializer list feature (std::initializer_list).
-
-Bugs fixed:
-
-- Fixed more possible stalls in concurrent invocations of
- task_arena::execute(), especially waiting for enqueued tasks.
-- Fixed requested number of workers for task_arena(P,0).
-- Fixed interoperability with Intel(R) VTune(TM) Amplifier XE in
- case of using task_arena::enqueue() from a terminating thread.
-
-Open-source contributions integrated:
-
-- Type fixes, cleanups, and code beautification by Raf Schietekat.
-- Improvements in atomic operations for big endian platforms
- by Raf Schietekat.
-
-------------------------------------------------------------------------
-Intel TBB 4.1 Update 3
-TBB_INTERFACE_VERSION == 6103
-
-Changes (w.r.t. Intel TBB 4.1 Update 2):
-
-- Binary files for Android* applications were added to the Linux* OS
- package.
-- Binary files for Windows Store* applications were added to the
- Windows* OS package.
-- Exact exception propagation (exception_ptr) support on Linux OS is
- now turned on by default for GCC 4.4 and higher.
-- Stopped implicit use of large memory pages by tbbmalloc (Linux-only).
- Now use of large pages must be explicitly enabled with
- scalable_allocation_mode() function or TBB_MALLOC_USE_HUGE_PAGES
- environment variable.
-
-Community Preview Features:
-
-- Extended class task_arena constructor and method initialize() to
- allow some concurrency to be reserved strictly for application
- threads.
-- New methods terminate() and is_active() were added to class
- task_arena.
-
-Bugs fixed:
-
-- Fixed initialization of hashing helper constant in the hash
- containers.
-- Fixed possible stalls in concurrent invocations of
- task_arena::execute() when no worker thread is available to make
- progress.
-- Fixed incorrect calculation of hardware concurrency in the presence
- of inactive processor groups, particularly on systems running
- Windows* 8 and Windows* Server 2012.
-
-Open-source contributions integrated:
-
-- The fix for the GUI examples on OS X* systems by Raf Schietekat.
-- Moved some power-of-2 calculations to functions to improve readability
- by Raf Schietekat.
-- C++11/Clang support improvements by arcata.
-- ARM* platform isolation layer by Steve Capper, Leif Lindholm, Leo Lara
- (ARM).
-
-------------------------------------------------------------------------
-Intel TBB 4.1 Update 2
-TBB_INTERFACE_VERSION == 6102
-
-Changes (w.r.t. Intel TBB 4.1 Update 1):
-
-- Objects up to 128 MB are now cached by the tbbmalloc. Previously
- the threshold was 8MB. Objects larger than 128 MB are still
- processed by direct OS calls.
-- concurrent_unordered_multiset and concurrent_unordered_multimap
- have been added, based on Microsoft* PPL prototype.
-- Ability to value-initialize a tbb::atomic variable on construction
- in C++11, with const expressions properly supported.
-
-Community Preview Features:
-
-- Added a possibility to wait until all worker threads terminate.
- This is necessary before calling fork() from an application.
-
-Bugs fixed:
-
-- Fixed data race in tbbmalloc that might lead to memory leaks
- for large object allocations.
-- Fixed task_arena::enqueue() to use task_group_context of target arena.
-- Improved implementation of 64 bit atomics on ia32.
-
-------------------------------------------------------------------------
-Intel TBB 4.1 Update 1
-TBB_INTERFACE_VERSION == 6101
-
-Changes (w.r.t. Intel TBB 4.1):
-
-- concurrent_vector class now supports initialization/assignment
- via C++11 initializer list feature (std::initializer_list)
-- Added implementation of the platform isolation layer based on
- Intel compiler atomic built-ins; it is supposed to work on
- any platform supported by compiler version 12.1 and newer.
-- Using GetNativeSystemInfo() instead of GetSystemInfo() to support
- more than 32 processors for 32-bit applications under WOW64.
-- The following form of parallel_for:
- parallel_for(first, last, [step,] f[, context]) now accepts an
- optional partitioner parameter after the function f.
-
-Backward-incompatible API changes:
-
-- The library no longer injects tuple in to namespace std.
- In previous releases, tuple was injected into namespace std by
- flow_graph.h when std::tuple was not available. In this release,
- flow_graph.h now uses tbb::flow::tuple. On platforms where
- std::tuple is available, tbb::flow::tuple is typedef'ed to
- std::tuple. On all other platforms, tbb::flow::tuple provides
- a subset of the functionality defined by std::tuple. Users of
- flow_graph.h may need to change their uses of std::tuple to
- tbb::flow::tuple to ensure compatibility with non-C++11 compliant
- compilers.
-
-Bugs fixed:
-
-- Fixed local observer to be able to override propagated CPU state and
- to provide correct value of task_arena::current_slot() in callbacks.
-
-------------------------------------------------------------------------
-Intel TBB 4.1
-TBB_INTERFACE_VERSION == 6100
-
-Changes (w.r.t. Intel TBB 4.0 Update 5):
-
-- _WIN32_WINNT must be set to 0x0501 or greater in order to use TBB
- on Microsoft* Windows*.
-- parallel_deterministic_reduce template function is fully supported.
-- TBB headers can be used with C++0x/C++11 mode (-std=c++0x) of GCC
- and Intel(R) Compiler.
-- C++11 std::make_exception_ptr is used where available, instead of
- std::copy_exception from earlier C++0x implementations.
-- Improvements in the TBB allocator to reduce extra memory consumption.
-- Partial refactoring of the task scheduler data structures.
-- TBB examples allow more flexible specification of the thread number,
- including arithmetic and geometric progression.
-
-Bugs fixed:
-
-- On Linux & OS X*, pre-built TBB binaries do not yet support exact
- exception propagation via C++11 exception_ptr. To prevent run time
- errors, by default TBB headers disable exact exception propagation
- even if the C++ implementation provides exception_ptr.
-
-Community Preview Features:
-
-- Added: class task_arena, for work submission by multiple application
- threads with thread-independent control of concurrency level.
-- Added: task_scheduler_observer can be created as local to a master
- thread, to observe threads that work on behalf of that master.
- Local observers may have new on_scheduler_leaving() callback.
-
-------------------------------------------------------------------------
-Intel TBB 4.0 Update 5
-TBB_INTERFACE_VERSION == 6005
-
-Changes (w.r.t. Intel TBB 4.0 Update 4):
-
-- Parallel pipeline optimization (directly storing small objects in the
- interstage data buffers) limited to trivially-copyable types for
- C++11 and a short list of types for earlier compilers.
-- _VARIADIC_MAX switch is honored for TBB tuple implementation
- and flow::graph nodes based on tuple.
-- Support of Cocoa framework was added to the GUI examples on OS X*
- systems.
-
-Bugs fixed:
-
-- Fixed a tv_nsec overflow bug in condition_variable::wait_for.
-- Fixed execution order of enqueued tasks with different priorities.
-- Fixed a bug with task priority changes causing lack of progress
- for fire-and-forget tasks when TBB was initialized to use 1 thread.
-- Fixed duplicate symbol problem when linking multiple compilation
- units that include flow_graph.h on VC 10.
-
-------------------------------------------------------------------------
-Intel TBB 4.0 Update 4
-TBB_INTERFACE_VERSION == 6004
-
-Changes (w.r.t. Intel 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 OS X* by Blas Rodriguez Somoza.
-- Fixes for warnings and corner-case bugs by Blas Rodriguez Somoza
- and Edward Lam.
-
-------------------------------------------------------------------------
-Intel TBB 4.0 Update 3
-TBB_INTERFACE_VERSION == 6003
-
-Changes (w.r.t. Intel 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.
-
-------------------------------------------------------------------------
-Intel TBB 4.0 Update 2 commercial-aligned release
-TBB_INTERFACE_VERSION == 6002
-
-Changes (w.r.t. Intel 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 presence of affinitized tasks.
-
-------------------------------------------------------------------------
-Intel TBB 4.0 Update 1 commercial-aligned release
-TBB_INTERFACE_VERSION == 6000 (forgotten to increment)
-
-Changes (w.r.t. Intel TBB 4.0 commercial-aligned release):
-
-- Memory leaks fixed in binpack example.
-- Improvements and fixes in the TBB allocator.
-
-------------------------------------------------------------------------
-Intel TBB 4.0 commercial-aligned release
-TBB_INTERFACE_VERSION == 6000
-
-Changes (w.r.t. Intel 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.
-
-------------------------------------------------------------------------
-Intel TBB 3.0 Update 8 commercial-aligned release
-TBB_INTERFACE_VERSION == 5008
-
-Changes (w.r.t. Intel 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.
-
-------------------------------------------------------------------------
-Intel TBB 3.0 Update 7 commercial-aligned release
-TBB_INTERFACE_VERSION == 5006 (forgotten to increment)
-
-Changes (w.r.t. Intel 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.
-
-
-------------------------------------------------------------------------
-Intel TBB 3.0 Update 6 commercial-aligned release
-TBB_INTERFACE_VERSION == 5006
-
-Changes (w.r.t. Intel 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
-
-------------------------------------------------------------------------
-Intel TBB 3.0 Update 5 commercial-aligned release
-TBB_INTERFACE_VERSION == 5005
-
-Changes (w.r.t. Intel 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.
-
-------------------------------------------------------------------------
-Intel TBB 3.0 Update 4 commercial-aligned release
-TBB_INTERFACE_VERSION == 5004
-
-Changes (w.r.t. Intel 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.
-
-------------------------------------------------------------------------
-Intel TBB 3.0 Update 3 commercial-aligned release
-TBB_INTERFACE_VERSION == 5003
-
-Changes (w.r.t. Intel 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 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.
-
-------------------------------------------------------------------------
-Intel TBB 3.0 Update 2 commercial-aligned release
-TBB_INTERFACE_VERSION == 5002
-
-Changes (w.r.t. Intel 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).
-
-------------------------------------------------------------------------
-Intel TBB 3.0 Update 1 commercial-aligned release
-TBB_INTERFACE_VERSION == 5000 (forgotten to increment)
-
-Changes (w.r.t. Intel 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 cancellation 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.
-
-------------------------------------------------------------------------
-Intel TBB 3.0 commercial-aligned release
-TBB_INTERFACE_VERSION == 5000
-
-Changes (w.r.t. Intel 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 superseded:
- 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. Intel 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 //[bin|lib]
- (in TBB 2.x, it was [bin|lib]//).
-- 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 (_cl.sln) and
- Intel C++ compiler (_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.
-
-------------------------------------------------------------------------
-Intel TBB 2.2 Update 3 commercial-aligned release
-TBB_INTERFACE_VERSION == 4003
-
-Changes (w.r.t. Intel 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.
-
-------------------------------------------------------------------------
-Intel TBB 2.2 Update 2 commercial-aligned release
-TBB_INTERFACE_VERSION == 4002
-
-Changes (w.r.t. Intel 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 (1616).
-
-------------------------------------------------------------------------
-Intel TBB 2.2 Update 1 commercial-aligned release
-TBB_INTERFACE_VERSION == 4001
-
-Changes (w.r.t. Intel 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. Intel 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.
-
-------------------------------------------------------------------------
-Intel TBB 2.2 commercial-aligned release
-TBB_INTERFACE_VERSION == 4000
-
-Changes (w.r.t. Intel 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.
-
-------------------------------------------------------------------------
-Intel TBB 2.1 Update 4 commercial-aligned release
-TBB_INTERFACE_VERSION == 3016
-
-Changes (w.r.t. Intel 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 documentation.
-
-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.
-
-------------------------------------------------------------------------
-Intel TBB 2.1 Update 3 commercial-aligned release
-TBB_INTERFACE_VERSION == 3015
-
-Changes (w.r.t. Intel 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.
-
-------------------------------------------------------------------------
-Intel TBB 2.1 Update 2 commercial-aligned release
-TBB_INTERFACE_VERSION == 3014
-
-Changes (w.r.t. Intel 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 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::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. 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.
-
-------------------------------------------------------------------------
-Intel TBB 2.1 Update 1 commercial-aligned release
-TBB_INTERFACE_VERSION == 3013
-
-Changes (w.r.t. Intel 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.
-
-------------------------------------------------------------------------
-Intel TBB 2.1 commercial-aligned release
-TBB_INTERFACE_VERSION == 3011
-
-Changes (w.r.t. Intel 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.
-
-------------------------------------------------------------------------
-Intel 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. Intel 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.
-
-------------------------------------------------------------------------
-Intel 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. Intel 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. Intel 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.
-
-------------------------------------------------------------------------
-Intel TBB 2.0 U1 commercial-aligned release (package 014, October 1, 2007)
-
-Corresponds to commercial 014 (for Linux*, 016) packages.
-
-Changes (w.r.t. Intel 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.
-
-------------------------------------------------------------------------
-Intel TBB 2.0 commercial-aligned release (package 010, July 19, 2007)
-
-Corresponds to commercial 010 (for Linux*, 012) packages.
-
-- TBB open-source debut release.
-
-------------------------------------------------------------------------
-Intel TBB 1.1 commercial release (April 10, 2007)
-
-Changes (w.r.t. Intel 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.
-
-------------------------------------------------------------------------
-Intel TBB 1.0 Update 2 commercial release
-
-Changes (w.r.t. Intel TBB 1.0 Update 1 commercial release):
-
-- Mac OS* X 64-bit support added.
-- Source packages for commercial releases introduced.
-
-------------------------------------------------------------------------
-Intel TBB 1.0 Update 1 commercial-aligned release
-
-Changes (w.r.t. Intel TBB 1.0 commercial release):
-
-- Fix for critical package issue on Mac OS* X.
-
-------------------------------------------------------------------------
-Intel TBB 1.0 commercial release (August 29, 2006)
-
-Changes (w.r.t. Intel 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().
-
-------------------------------------------------------------------------
-Intel 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, the Intel logo, Xeon, Intel Xeon Phi, 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/src/tbb/CMakeLists.txt b/src/tbb/CMakeLists.txt
new file mode 100644
index 000000000..811a3a554
--- /dev/null
+++ b/src/tbb/CMakeLists.txt
@@ -0,0 +1,348 @@
+# Copyright (c) 2020-2024 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+cmake_minimum_required(VERSION 3.5)
+
+# Enable CMake policies
+
+if (POLICY CMP0068)
+ # RPATH settings do not affect install_name on macOS since CMake 3.9
+ cmake_policy(SET CMP0068 NEW)
+endif()
+
+if (POLICY CMP0091)
+ # The NEW behavior for this policy is to not place MSVC runtime library flags in the default
+ # CMAKE__FLAGS_ cache entries and use CMAKE_MSVC_RUNTIME_LIBRARY abstraction instead.
+ cmake_policy(SET CMP0091 NEW)
+elseif (DEFINED CMAKE_MSVC_RUNTIME_LIBRARY)
+ message(FATAL_ERROR "CMAKE_MSVC_RUNTIME_LIBRARY was defined while policy CMP0091 is not available. Use CMake 3.15 or newer.")
+endif()
+
+if (TBB_WINDOWS_DRIVER AND (NOT ("${CMAKE_MSVC_RUNTIME_LIBRARY}" STREQUAL MultiThreaded OR "${CMAKE_MSVC_RUNTIME_LIBRARY}" STREQUAL MultiThreadedDebug)))
+ message(FATAL_ERROR "Enabled TBB_WINDOWS_DRIVER requires CMAKE_MSVC_RUNTIME_LIBRARY to be set to MultiThreaded or MultiThreadedDebug.")
+endif()
+
+# Enable support of minimum supported macOS version flag
+if (APPLE)
+ if (NOT CMAKE_CXX_OSX_DEPLOYMENT_TARGET_FLAG)
+ set(CMAKE_CXX_OSX_DEPLOYMENT_TARGET_FLAG "-mmacosx-version-min=" CACHE STRING "Minimum macOS version flag")
+ endif()
+ if (NOT CMAKE_C_OSX_DEPLOYMENT_TARGET_FLAG)
+ set(CMAKE_C_OSX_DEPLOYMENT_TARGET_FLAG "-mmacosx-version-min=" CACHE STRING "Minimum macOS version flag")
+ endif()
+endif()
+
+file(READ include/oneapi/tbb/version.h _tbb_version_info)
+string(REGEX REPLACE ".*#define TBB_VERSION_MAJOR ([0-9]+).*" "\\1" _tbb_ver_major "${_tbb_version_info}")
+string(REGEX REPLACE ".*#define TBB_VERSION_MINOR ([0-9]+).*" "\\1" _tbb_ver_minor "${_tbb_version_info}")
+string(REGEX REPLACE ".*#define TBB_VERSION_PATCH ([0-9]+).*" "\\1" _tbb_ver_patch "${_tbb_version_info}")
+string(REGEX REPLACE ".*#define TBB_INTERFACE_VERSION ([0-9]+).*" "\\1" TBB_INTERFACE_VERSION "${_tbb_version_info}")
+string(REGEX REPLACE ".*#define __TBB_BINARY_VERSION ([0-9]+).*" "\\1" TBB_BINARY_VERSION "${_tbb_version_info}")
+string(REGEX REPLACE "..(..)." "\\1" TBB_BINARY_MINOR_VERSION "${TBB_INTERFACE_VERSION}")
+set(TBBMALLOC_BINARY_VERSION 2)
+set(TBBBIND_BINARY_VERSION 3)
+
+project(TBB VERSION ${_tbb_ver_major}.${_tbb_ver_minor}.${_tbb_ver_patch} LANGUAGES CXX)
+unset(_tbb_ver_major)
+unset(_tbb_ver_minor)
+
+include(CheckCXXCompilerFlag)
+include(GNUInstallDirs)
+include(CMakeDependentOption)
+
+# ---------------------------------------------------------------------------------------------------------
+# Handle C++ standard version.
+if (NOT MSVC) # no need to cover MSVC as it uses C++14 by default.
+ if (NOT CMAKE_CXX_STANDARD)
+ set(CMAKE_CXX_STANDARD 11)
+ endif()
+
+ if (CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION) # if standard option was detected by CMake
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
+ else() # if standard option wasn't detected by CMake (e.g. for Intel Compiler with CMake 3.1)
+ # TBB_CXX_STD_FLAG should be added to targets via target_compile_options
+ set(TBB_CXX_STD_FLAG -std=c++${CMAKE_CXX_STANDARD})
+
+ check_cxx_compiler_flag(${TBB_CXX_STD_FLAG} c++${CMAKE_CXX_STANDARD})
+ if (NOT c++${CMAKE_CXX_STANDARD})
+ message(FATAL_ERROR "C++${CMAKE_CXX_STANDARD} (${TBB_CXX_STD_FLAG}) support is required")
+ endif()
+ unset(c++${CMAKE_CXX_STANDARD})
+ endif()
+endif()
+
+set(CMAKE_CXX_EXTENSIONS OFF) # use -std=c++... instead of -std=gnu++...
+# ---------------------------------------------------------------------------------------------------------
+
+# Detect architecture (bitness).
+if (CMAKE_SIZEOF_VOID_P EQUAL 4)
+ set(TBB_ARCH 32)
+else()
+ set(TBB_ARCH 64)
+endif()
+
+option(TBB_TEST "Enable testing" ON)
+option(TBB_EXAMPLES "Enable examples" OFF)
+option(TBB_STRICT "Treat compiler warnings as errors" ON)
+option(TBB_WINDOWS_DRIVER "Build as Universal Windows Driver (UWD)" OFF)
+option(TBB_NO_APPCONTAINER "Apply /APPCONTAINER:NO (for testing binaries for Windows Store)" OFF)
+option(TBB4PY_BUILD "Enable tbb4py build" OFF)
+option(TBB_BUILD "Enable tbb build" ON)
+option(TBBMALLOC_BUILD "Enable tbbmalloc build" ON)
+cmake_dependent_option(TBBMALLOC_PROXY_BUILD "Enable tbbmalloc_proxy build" ON "TBBMALLOC_BUILD" OFF)
+option(TBB_CPF "Enable preview features of the library" OFF)
+option(TBB_FIND_PACKAGE "Enable search for external oneTBB using find_package instead of build from sources" OFF)
+option(TBB_DISABLE_HWLOC_AUTOMATIC_SEARCH "Disable HWLOC automatic search by pkg-config tool" ${CMAKE_CROSSCOMPILING})
+option(TBB_ENABLE_IPO "Enable Interprocedural Optimization (IPO) during the compilation" ON)
+option(TBB_FUZZ_TESTING "Enable fuzz testing" OFF)
+option(TBB_INSTALL "Enable installation" ON)
+if(LINUX)
+option(TBB_LINUX_SEPARATE_DBG "Enable separation of the debug symbols during the build" OFF)
+endif()
+if(APPLE)
+option(TBB_BUILD_APPLE_FRAMEWORKS "Build as Apple Frameworks" OFF)
+endif()
+
+if (NOT DEFINED BUILD_SHARED_LIBS)
+ set(BUILD_SHARED_LIBS ON)
+endif()
+
+if (NOT BUILD_SHARED_LIBS)
+ if(NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE)
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+ endif()
+ message(WARNING "You are building oneTBB as a static library. This is highly discouraged and such configuration is not supported. Consider building a dynamic library to avoid unforeseen issues.")
+endif()
+
+if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+ set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Build type" FORCE)
+ message(STATUS "CMAKE_BUILD_TYPE is not specified. Using default: ${CMAKE_BUILD_TYPE}")
+ # Possible values of build type for cmake-gui
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
+endif()
+
+if (CMAKE_BUILD_TYPE)
+ string(TOLOWER ${CMAKE_BUILD_TYPE} _tbb_build_type)
+ if (_tbb_build_type STREQUAL "debug")
+ set(TBB_ENABLE_IPO OFF)
+ endif()
+ unset(_tbb_build_type)
+endif()
+
+# -------------------------------------------------------------------
+# Files and folders naming
+set(CMAKE_DEBUG_POSTFIX _debug)
+
+if (NOT DEFINED TBB_OUTPUT_DIR_BASE)
+ if (MSVC)
+ if (NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY OR CMAKE_MSVC_RUNTIME_LIBRARY MATCHES DLL)
+ set(_tbb_msvc_runtime _md)
+ else()
+ set(_tbb_msvc_runtime _mt)
+ endif()
+
+ if (WINDOWS_STORE)
+ if (TBB_NO_APPCONTAINER)
+ set(_tbb_win_store _wsnoappcont)
+ else()
+ set(_tbb_win_store _ws)
+ endif()
+ elseif(TBB_WINDOWS_DRIVER)
+ set(_tbb_win_store _wd)
+ endif()
+ endif()
+
+ string(REGEX MATCH "^([0-9]+\.[0-9]+|[0-9]+)" _tbb_compiler_version_short ${CMAKE_CXX_COMPILER_VERSION})
+ string(TOLOWER ${CMAKE_CXX_COMPILER_ID}_${_tbb_compiler_version_short}_cxx${CMAKE_CXX_STANDARD}_${TBB_ARCH}${_tbb_msvc_runtime}${_tbb_win_store} TBB_OUTPUT_DIR_BASE)
+ unset(_tbb_msvc_runtime)
+ unset(_tbb_win_store)
+ unset(_tbb_compiler_version_short)
+endif()
+
+foreach(output_type LIBRARY ARCHIVE PDB RUNTIME)
+ if (CMAKE_BUILD_TYPE)
+ string(TOLOWER ${CMAKE_BUILD_TYPE} _tbb_build_type_lower)
+ set(CMAKE_${output_type}_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${TBB_OUTPUT_DIR_BASE}_${_tbb_build_type_lower})
+ unset(_tbb_build_type_lower)
+ endif()
+
+ if (CMAKE_CONFIGURATION_TYPES)
+ foreach(suffix ${CMAKE_CONFIGURATION_TYPES})
+ string(TOUPPER ${suffix} _tbb_suffix_upper)
+ string(TOLOWER ${suffix} _tbb_suffix_lower)
+ set(CMAKE_${output_type}_OUTPUT_DIRECTORY_${_tbb_suffix_upper} ${CMAKE_BINARY_DIR}/${TBB_OUTPUT_DIR_BASE}_${_tbb_suffix_lower})
+ endforeach()
+ unset(_tbb_suffix_lower)
+ unset(_tbb_suffix_upper)
+ endif()
+endforeach()
+
+if (CMAKE_CONFIGURATION_TYPES)
+ # We can't use generator expressions in a cmake variable name.
+ set(TBB_TEST_WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${TBB_OUTPUT_DIR_BASE}_$>)
+else()
+ set(TBB_TEST_WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
+endif()
+
+# -------------------------------------------------------------------
+
+# -------------------------------------------------------------------
+# Common dependencies
+#force -pthread during compilation for Emscripten
+if (EMSCRIPTEN AND NOT EMSCRIPTEN_WITHOUT_PTHREAD)
+ set(THREADS_HAVE_PTHREAD_ARG TRUE)
+endif()
+
+set(THREADS_PREFER_PTHREAD_FLAG TRUE)
+find_package(Threads REQUIRED)
+# -------------------------------------------------------------------
+
+file(GLOB FILES_WITH_EXTRA_TARGETS ${CMAKE_CURRENT_SOURCE_DIR}/cmake/*.cmake)
+foreach(FILE_WITH_EXTRA_TARGETS ${FILES_WITH_EXTRA_TARGETS})
+ include(${FILE_WITH_EXTRA_TARGETS})
+endforeach()
+
+# - Enabling LTO on Android causes the NDK bug.
+# NDK throws the warning: "argument unused during compilation: '-Wa,--noexecstack'"
+# - For some reason GCC does not instrument code with Thread Sanitizer when lto is enabled and C linker is used.
+if (TBB_ENABLE_IPO AND BUILD_SHARED_LIBS AND NOT ANDROID_PLATFORM AND NOT TBB_SANITIZE MATCHES "thread")
+ if (NOT CMAKE_VERSION VERSION_LESS 3.9)
+ cmake_policy(SET CMP0069 NEW)
+ include(CheckIPOSupported)
+ check_ipo_supported(RESULT TBB_IPO_PROPERTY)
+ else()
+ set(TBB_IPO_FLAGS TRUE)
+ endif()
+ if (TBB_IPO_PROPERTY OR TBB_IPO_FLAGS)
+ message(STATUS "IPO enabled")
+ endif()
+endif()
+
+set(TBB_COMPILER_SETTINGS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compilers/${CMAKE_CXX_COMPILER_ID}.cmake)
+if (EXISTS ${TBB_COMPILER_SETTINGS_FILE})
+ include(${TBB_COMPILER_SETTINGS_FILE})
+else()
+ message(WARNING "TBB compiler settings not found ${TBB_COMPILER_SETTINGS_FILE}")
+endif()
+
+if (TBB_FIND_PACKAGE AND TBB_DIR)
+ # Allow specifying external TBB to test with.
+ # Do not add main targets and installation instructions in that case.
+ message(STATUS "Using external TBB for testing")
+ find_package(TBB REQUIRED)
+else()
+ if (TBB_BUILD)
+ add_subdirectory(src/tbb)
+ endif()
+ if (TBBMALLOC_BUILD)
+ add_subdirectory(src/tbbmalloc)
+ if(TBBMALLOC_PROXY_BUILD AND NOT "${MSVC_CXX_ARCHITECTURE_ID}" MATCHES "ARM64")
+ add_subdirectory(src/tbbmalloc_proxy)
+ endif()
+ endif()
+ if (NOT BUILD_SHARED_LIBS)
+ message(STATUS "TBBBind build targets are disabled due to unsupported environment")
+ else()
+ add_subdirectory(src/tbbbind)
+ endif()
+ if (TBB_INSTALL)
+ # -------------------------------------------------------------------
+ # Installation instructions
+ include(CMakePackageConfigHelpers)
+
+ install(DIRECTORY include/
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ COMPONENT devel)
+
+ install(EXPORT ${PROJECT_NAME}Targets
+ NAMESPACE TBB::
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+ COMPONENT devel)
+ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
+ "include(\${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}Targets.cmake)\n")
+ if (NOT BUILD_SHARED_LIBS)
+ file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
+ "include(CMakeFindDependencyMacro)\nfind_dependency(Threads)\n")
+ endif()
+
+ write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
+ COMPATIBILITY AnyNewerVersion)
+
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
+ COMPONENT devel)
+
+ install(FILES "README.md"
+ DESTINATION ${CMAKE_INSTALL_DOCDIR}
+ COMPONENT devel)
+ # -------------------------------------------------------------------
+ endif()
+endif()
+
+if (TBB_TEST)
+ enable_testing()
+ add_subdirectory(test)
+endif()
+
+if (TBB_EXAMPLES)
+ add_subdirectory(examples)
+endif()
+
+if (TBB_BENCH)
+ if (NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/benchmark)
+ message(FATAL_ERROR "Benchmarks are not supported yet")
+ endif()
+
+ enable_testing()
+ add_subdirectory(benchmark)
+endif()
+
+if (ANDROID_PLATFORM)
+ if ("${ANDROID_STL}" STREQUAL "c++_shared")
+ if (${ANDROID_NDK_MAJOR} GREATER_EQUAL "25")
+ if(ANDROID_ABI STREQUAL "arm64-v8a")
+ set(ANDROID_TOOLCHAIN_NAME "aarch64-linux-android")
+ elseif(ANDROID_ABI STREQUAL "x86_64")
+ set(ANDROID_TOOLCHAIN_NAME "x86_64-linux-android")
+ elseif(ANDROID_ABI STREQUAL "armeabi-v7a")
+ set(ANDROID_TOOLCHAIN_NAME "arm-linux-androideabi")
+ elseif(ANDROID_ABI STREQUAL "x86")
+ set(ANDROID_TOOLCHAIN_NAME "i686-linux-android")
+ endif()
+
+ configure_file(
+ "${ANDROID_TOOLCHAIN_ROOT}/sysroot/usr/lib/${ANDROID_TOOLCHAIN_NAME}/libc++_shared.so"
+ "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libc++_shared.so"
+ COPYONLY)
+ else()
+ configure_file(
+ "${ANDROID_NDK}/sources/cxx-stl/llvm-libc++/libs/${ANDROID_ABI}/libc++_shared.so"
+ "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libc++_shared.so"
+ COPYONLY)
+ endif()
+ endif()
+ # This custom target may be implemented without separate CMake script, but it requires
+ # ADB(Android Debug Bridge) executable file availability, so to incapsulate this requirement
+ # only for corresponding custom target, it was implemented by this way.
+ add_custom_target(device_environment_cleanup COMMAND ${CMAKE_COMMAND}
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/android/device_environment_cleanup.cmake)
+endif()
+
+if (TBB4PY_BUILD)
+ add_subdirectory(python)
+endif()
+
+# Keep it the last instruction.
+add_subdirectory(cmake/post_install)
diff --git a/src/tbb/CODEOWNERS b/src/tbb/CODEOWNERS
new file mode 100644
index 000000000..78105ac7e
--- /dev/null
+++ b/src/tbb/CODEOWNERS
@@ -0,0 +1,27 @@
+# Where component owners are known, add them here.
+
+/oneTBB/src/tbb/ @pavelkumbrasev
+/oneTBB/src/tbb/ @dnmokhov
+/oneTBB/src/tbb/ @JhaShweta1
+/oneTBB/src/tbb/ @sarathnandu
+/oneTBB/include/oneapi/tbb/parallel_* @pavelkumbrasev
+/oneTBB/include/oneapi/tbb/concurrent_* @kboyarinov
+/oneTBB/include/oneapi/tbb/flow_graph* @kboyarinov
+/oneTBB/include/oneapi/tbb/flow_graph* @aleksei-fedotov
+/oneTBB/include/oneapi/tbb/detail/_flow_graph* @kboyarinov
+/oneTBB/include/oneapi/tbb/detail/_flow_graph* @aleksei-fedotov
+/oneTBB/include/oneapi/tbb/detail/_concurrent* @kboyarinov
+/oneTBB/src/doc @aepanchi
+/oneTBB/src/tbbbind/ @isaevil
+/oneTBB/src/tbbmalloc/ @lplewa
+/oneTBB/src/tbbmalloc_proxy/ @lplewa
+/oneTBB/cmake/ @isaevil
+/oneTBB/*CMakeLists.txt @isaevil
+/oneTBB/python/ @sarathnandu
+/oneTBB/python/ @isaevil
+
+# Bazel build related files.
+/oneTBB/.bazelversion @Vertexwahn
+/oneTBB/Bazel.md @Vertexwahn
+/oneTBB/BUILD.bazel @Vertexwahn
+/oneTBB/MODULE.bazel @Vertexwahn
diff --git a/src/tbb/CODE_OF_CONDUCT.md b/src/tbb/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..c16970739
--- /dev/null
+++ b/src/tbb/CODE_OF_CONDUCT.md
@@ -0,0 +1,134 @@
+
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, caste, color, religion, or sexual
+identity and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the overall
+ community
+
+Examples of unacceptable behavior include:
+
+* The use of sexualized language or imagery, and sexual attention or advances of
+ any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email address,
+ without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official email address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+oneTBBCodeOfConduct At intel DOT com.
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series of
+actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or permanent
+ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within the
+community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.1, available at
+[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
+
+Community Impact Guidelines were inspired by
+[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
+
+For answers to common questions about this code of conduct, see the FAQ at
+[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
+[https://www.contributor-covenant.org/translations][translations].
+
+[homepage]: https://www.contributor-covenant.org
+[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
+[Mozilla CoC]: https://github.com/mozilla/diversity
+[FAQ]: https://www.contributor-covenant.org/faq
+[translations]: https://www.contributor-covenant.org/translations
+
diff --git a/src/tbb/CONTRIBUTING.md b/src/tbb/CONTRIBUTING.md
new file mode 100644
index 000000000..b2b6a968c
--- /dev/null
+++ b/src/tbb/CONTRIBUTING.md
@@ -0,0 +1,45 @@
+
+
+# How to Contribute
+As an open source project, we welcome community contributions to oneAPI Threading Building Blocks (oneTBB). This document explains how to participate in project conversations, log bugs and enhancement requests, and submit code patches to the project.
+
+## Licensing
+
+Licensing is very important to open source projects. It helps ensure the software continues to be available under the terms that the author desired. The oneTBB project uses the [Apache 2.0 License](https://github.com/oneapi-src/oneTBB/blob/master/LICENSE.txt), a permissive open source license that allows you to freely use, modify, and distribute your own products that include Apache 2.0 licensed software. By contributing to the oneTBB project, you agree to the license and copyright terms therein and release your own contributions under these terms.
+
+Some imported or reused components within oneTBB use other licenses, as described in [third-party-programs.txt](https://github.com/oneapi-src/oneTBB/blob/master/third-party-programs.txt). By carefully reviewing potential contributions, we can ensure that the community can develop products with oneTBB without concerns over patent or copyright issues.
+
+## Prerequisites
+
+As a contributor, you’ll want to be familiar with the oneTBB project and the repository layout. You should also know how to use it as explained in the [oneTBB documentation](https://oneapi-src.github.io/oneTBB/) and how to set up your build development environment to configure, build, and test oneTBB as explained in the [oneTBB Build System Description](cmake/README.md).
+
+## Pull Requests
+
+You can find all [open oneTBB pull requests](https://github.com/oneapi-src/oneTBB/pulls) on GitHub.
+
+### Before contributing changes directly to the oneTBB repository
+
+* Make sure you can build the product and run all the tests with your patch.
+* For a larger feature, provide a relevant test.
+* Document your code. The oneTBB project uses reStructuredText for documentation.
+* Update the copyright year in the first line of the changing file(s).
+ For example, if you commit your changes in 2022:
+ * the copyright year should be `2005-2022` for existing files
+ * the copyright year should be `2022` for new files
+* Submit a pull request into the master branch. You can submit changes with a pull request (preferred) or by sending an email patch.
+
+Continuous Integration (CI) testing is enabled for the repository. Your pull request must pass all checks before it can be merged. We will review your contribution and may provide feedback to guide you if any additional fixes or modifications are necessary. When reviewed and accepted, your pull request will be merged into our GitHub repository.
diff --git a/src/tbb/Doxyfile b/src/tbb/Doxyfile
deleted file mode 100644
index 3c7727f84..000000000
--- a/src/tbb/Doxyfile
+++ /dev/null
@@ -1,1325 +0,0 @@
-# Doxyfile 1.4.7
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME = "Intel(R) Threading Building Blocks Doxygen Documentation"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER = "version 4.2.3"
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY =
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
-# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
-# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
-# Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE = English
-
-# This tag can be used to specify the encoding used in the generated output.
-# The encoding is not always determined by the language that is chosen,
-# but also whether or not the output is meant for Windows or non-Windows users.
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
-# forces the Windows encoding (this is the default for the Windows binary),
-# whereas setting the tag to NO uses a Unix-style encoding (the default for
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = YES
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like the Qt-style comments (thus requiring an
-# explicit @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member
-# documentation.
-
-DETAILS_AT_TOP = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for Java.
-# For instance, namespaces will be presented as packages, qualified scopes
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT = YES
-
-# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
-# to that level are automatically included in the table of contents, even if
-# they do not have an id attribute.
-# Note: This feature currently applies only to Markdown headings.
-# Minimum value: 0, maximum value: 99, default value: 0.
-# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
-
-TOC_INCLUDE_HEADINGS = 0
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
-# include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = YES
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = YES
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = NO
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = NO
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = NO
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS = INTERNAL
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES = YES
-
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from the
-# version control system). Doxygen will invoke the program by executing (via
-# popen()) the command , where is the value of
-# the FILE_VERSION_FILTER tag, and is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT = include/ src/tbb/
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
-
-FILE_PATTERNS =
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command , where
-# is the value of the INPUT_FILTER tag, and is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER = YES
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = YES
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default)
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentstion.
-
-REFERENCES_LINK_SOURCE = NO
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER = doc/copyright_brand_disclaimer_doxygen.txt
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW = YES
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING = NO
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED = TBB_PREVIEW_FLOW_GRAPH_FEATURES \
- TBB_PREVIEW_FLOW_GRAPH_NODES \
- __TBB_PREVIEW_OPENCL_NODE \
- __TBB_CPP11_RVALUE_REF_PRESENT \
- __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT \
- __TBB_IMPLICIT_MOVE_PRESENT \
- __TBB_EXCEPTION_PTR_PRESENT \
- __TBB_STATIC_ASSERT_PRESENT \
- __TBB_CPP11_TUPLE_PRESENT \
- __TBB_INITIALIZER_LISTS_PRESENT \
- __TBB_CONSTEXPR_PRESENT \
- __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT \
- __TBB_NOEXCEPT_PRESENT \
- __TBB_CPP11_STD_BEGIN_END_PRESENT \
- __TBB_CPP11_AUTO_PRESENT \
- __TBB_CPP11_DECLTYPE_PRESENT \
- __TBB_CPP11_LAMBDAS_PRESENT \
- __TBB_CPP11_DEFAULT_FUNC_TEMPLATE_ARGS_PRESENT \
- __TBB_OVERRIDE_PRESENT \
- __TBB_ALIGNAS_PRESENT \
- __TBB_CPP11_TEMPLATE_ALIASES_PRESENT \
- __TBB_FLOW_GRAPH_CPP11_FEATURES \
- __TBB_PREVIEW_STREAMING_NODE
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
-CLASS_DIAGRAMS = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = YES
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK = YES
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a call dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-
-CALL_GRAPH = YES
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a caller dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-
-CALLER_GRAPH = YES
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT = svg
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG = YES
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_WIDTH = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT = 1024
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that a graph may be further truncated if the graph's
-# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
-# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
-# the graph is not depth-constrained.
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES = 200
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, which results in a white background.
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS = YES
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = YES
diff --git a/src/tbb/INSTALL.md b/src/tbb/INSTALL.md
new file mode 100644
index 000000000..0ac95f875
--- /dev/null
+++ b/src/tbb/INSTALL.md
@@ -0,0 +1,135 @@
+# Installation from Sources
+
+
+## Prerequisites
+
+ - Make sure you have installed CMake version 3.1 (or newer) on your system. oneTBB uses CMake build configuration.
+ - Configure and build oneTBB. To work with build configurations, see [Build System Description](cmake/README.md).
+
+
+## Configure oneTBB
+
+At the command prompt, type:
+```
+cmake
+```
+
+You may want to use some additional options for configuration:
+
+| Option | Purpose | Description |
+| ------ |------ | ------ |
+| `-G ` | Specify project generator | For more information, run cmake `–help`. |
+|`-DCMAKE_BUILD_TYPE=Debug` | Specify for Debug build | Not applicable for multi-configuration generators such as Visual Studio generator. |
+
+
+## Build oneTBB
+
+To build the system, run:
+```
+cmake --build .
+```
+
+Some useful build options:
+- `--target ` - specific target, "all" is default.
+- `--config ` - build configuration, applicable only for multi-config generators such as Visual Studio generator.
+
+
+## Install and Pack oneTBB
+
+---
+**NOTE**
+
+Be careful about installing prefix. It defaults to `/usr/local` on UNIX* and `c:/Program Files/${PROJECT_NAME}` on Windows* OS.
+You can define custom `CMAKE_INSTALL_PREFIX` during configuration:
+
+```
+cmake -DCMAKE_INSTALL_PREFIX=/my/install/prefix ..
+```
+
+---
+
+Installation can also be done using:
+
+```
+cmake --install
+```
+
+Special ``--install`` target can alternatively be used for installation, e.g. ``make install``.
+
+You can use the ``install`` components for partial installation.
+
+The following install components are supported:
+- `runtime` - oneTBB runtime package (core shared libraries and `.dll` files on Windows* OS).
+- `devel` - oneTBB development package (header files, CMake integration files, library symbolic links, and `.lib` files on Windows* OS).
+- `tbb4py` - [oneTBB Module for Python](https://github.com/oneapi-src/oneTBB/blob/master/python/README.md).
+
+If you want to install specific components after configuration and build, run:
+
+```bash
+cmake -DCOMPONENT= [-DBUILD_TYPE=] -P cmake_install.cmake
+```
+
+Simple packaging using CPack is supported.
+The following commands allow you to create a simple portable package that includes header files, libraries, and integration files for CMake:
+
+```bash
+cmake ..
+cpack
+```
+
+## Installation from vcpkg
+
+You can download and install oneTBB using the [vcpkg](https://github.com/Microsoft/vcpkg) dependency manager:
+```sh
+ git clone https://github.com/Microsoft/vcpkg.git
+ cd vcpkg
+ ./bootstrap-vcpkg.sh #.\bootstrap-vcpkg.bat(for Windows)
+ ./vcpkg integrate install
+ ./vcpkg install tbb
+```
+
+The oneTBB port in vcpkg is kept up to date by Microsoft* team members and community contributors. If the version is out of date, create an issue or pull request on the [vcpkg repository](https://github.com/Microsoft/vcpkg).
+
+## Example of Installation
+
+### Single-configuration generators
+
+The following example demonstrates how to install oneTBB for single-configuration generators (e.g. GNU Make, Ninja, etc.).
+```bash
+# Do our experiments in /tmp
+cd /tmp
+# Clone oneTBB repository
+git clone https://github.com/oneapi-src/oneTBB.git
+cd oneTBB
+# Create binary directory for out-of-source build
+mkdir build && cd build
+# Configure: customize CMAKE_INSTALL_PREFIX and disable TBB_TEST to avoid tests build
+cmake -DCMAKE_INSTALL_PREFIX=/tmp/my_installed_onetbb -DTBB_TEST=OFF ..
+# Build
+cmake --build .
+# Install
+cmake --install .
+# Well done! Your installed oneTBB is in /tmp/my_installed_onetbb
+```
+
+### Multi-configuration generators
+
+The following example demonstrates how to install oneTBB for multi-configuration generators such as Visual Studio*.
+
+Choose the configuration during the build and install steps:
+```batch
+REM Do our experiments in %TMP%
+cd %TMP%
+REM Clone oneTBB repository
+git clone https://github.com/oneapi-src/oneTBB.git
+cd oneTBB
+REM Create binary directory for out-of-source build
+mkdir build && cd build
+REM Configure: customize CMAKE_INSTALL_PREFIX and disable TBB_TEST to avoid tests build
+cmake -DCMAKE_INSTALL_PREFIX=%TMP%\my_installed_onetbb -DTBB_TEST=OFF ..
+REM Build "release with debug information" configuration
+cmake --build . --config relwithdebinfo
+REM Install "release with debug information" configuration
+cmake --install . --config relwithdebinfo
+REM Well done! Your installed oneTBB is in %TMP%\my_installed_onetbb
+```
diff --git a/src/tbb/LICENSE b/src/tbb/LICENSE
deleted file mode 100644
index 261eeb9e9..000000000
--- a/src/tbb/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/src/tbb/COPYING b/src/tbb/LICENSE.txt
similarity index 100%
rename from src/tbb/COPYING
rename to src/tbb/LICENSE.txt
diff --git a/src/tbb/Makefile b/src/tbb/Makefile
deleted file mode 100644
index 29e3f5cfd..000000000
--- a/src/tbb/Makefile
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-tbb_root?=.
-include $(tbb_root)/build/common.inc
-.PHONY: default all tbb tbbmalloc tbbproxy test examples
-
-#workaround for non-depend targets tbb and tbbmalloc which both depend on version_string.ver
-#According to documentation, recursively invoked make commands can process their targets in parallel
-.NOTPARALLEL: tbb tbbmalloc tbbproxy
-
-default: tbb tbbmalloc $(if $(use_proxy),tbbproxy)
-
-all: tbb tbbmalloc tbbproxy test examples
-
-tbb: mkdir
- $(MAKE) -C "$(work_dir)_debug" -r -f $(tbb_root)/build/Makefile.tbb cfg=debug
- $(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbb cfg=release
-
-tbbmalloc: mkdir
- $(MAKE) -C "$(work_dir)_debug" -r -f $(tbb_root)/build/Makefile.tbbmalloc cfg=debug malloc
- $(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbbmalloc cfg=release malloc
-
-tbbproxy: mkdir
- $(MAKE) -C "$(work_dir)_debug" -r -f $(tbb_root)/build/Makefile.tbbproxy cfg=debug tbbproxy
- $(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbbproxy cfg=release tbbproxy
-
-test: tbb tbbmalloc $(if $(use_proxy),tbbproxy)
- -$(MAKE) -C "$(work_dir)_debug" -r -f $(tbb_root)/build/Makefile.tbbmalloc cfg=debug malloc_test
- -$(MAKE) -C "$(work_dir)_debug" -r -f $(tbb_root)/build/Makefile.test cfg=debug
- -$(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbbmalloc cfg=release malloc_test
- -$(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.test cfg=release
-
-rml: mkdir
- $(MAKE) -C "$(work_dir)_debug" -r -f $(tbb_root)/build/Makefile.rml cfg=debug
- $(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.rml cfg=release
-
-
-examples: tbb tbbmalloc
- $(MAKE) -C examples -r -f Makefile tbb_root=.. release test
-
-.PHONY: clean clean_examples mkdir info
-
-clean: clean_examples
- $(shell $(RM) $(work_dir)_release$(SLASH)*.* >$(NUL) 2>$(NUL))
- $(shell $(RD) $(work_dir)_release >$(NUL) 2>$(NUL))
- $(shell $(RM) $(work_dir)_debug$(SLASH)*.* >$(NUL) 2>$(NUL))
- $(shell $(RD) $(work_dir)_debug >$(NUL) 2>$(NUL))
- @echo clean done
-
-clean_examples:
- $(shell $(MAKE) -s -i -r -C examples -f Makefile tbb_root=.. clean >$(NUL) 2>$(NUL))
-
-mkdir:
- $(shell $(MD) "$(work_dir)_release" >$(NUL) 2>$(NUL))
- $(shell $(MD) "$(work_dir)_debug" >$(NUL) 2>$(NUL))
- @echo Created $(work_dir)_release and ..._debug directories
-
-info:
- @echo OS: $(tbb_os)
- @echo arch=$(arch)
- @echo compiler=$(compiler)
- @echo runtime=$(runtime)
- @echo tbb_build_prefix=$(tbb_build_prefix)
-
diff --git a/src/tbb/README b/src/tbb/README
deleted file mode 100644
index fcc87af0c..000000000
--- a/src/tbb/README
+++ /dev/null
@@ -1,11 +0,0 @@
-Intel(R) Threading Building Blocks - README
-
-See index.html for directions and documentation.
-
-If source is present (./Makefile and src/ directories),
-type 'gmake' in this directory to build and test.
-
-See examples/index.html for runnable examples and directions.
-
-See http://threadingbuildingblocks.org for full documentation
-and software information.
diff --git a/src/tbb/README.md b/src/tbb/README.md
index 4efa64a66..2e7c2e81b 100644
--- a/src/tbb/README.md
+++ b/src/tbb/README.md
@@ -1,34 +1,70 @@
-# Threading Building Blocks 2019 Update 8
-[![Stable release](https://img.shields.io/badge/version-2019_U8-green.svg)](https://github.com/01org/tbb/releases/tag/2019_U8)
-[![Apache License Version 2.0](https://img.shields.io/badge/license-Apache_2.0-green.svg)](LICENSE)
+# oneAPI Threading Building Blocks (oneTBB)
+[![Apache License Version 2.0](https://img.shields.io/badge/license-Apache_2.0-green.svg)](LICENSE.txt) [![oneTBB CI](https://github.com/oneapi-src/oneTBB/actions/workflows/ci.yml/badge.svg)](https://github.com/oneapi-src/oneTBB/actions/workflows/ci.yml?query=branch%3Amaster)
+[![Join the community on GitHub Discussions](https://badgen.net/badge/join%20the%20discussion/on%20github/blue?icon=github)](https://github.com/oneapi-src/oneTBB/discussions)
+[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9125/badge)](https://www.bestpractices.dev/projects/9125)
+[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/oneapi-src/oneTBB/badge)](https://securityscorecards.dev/viewer/?uri=github.com/oneapi-src/oneTBB)
-Threading Building Blocks (TBB) lets you easily write parallel C++ programs that take
-full advantage of multicore performance, that are portable, composable and have future-proof scalability.
+oneTBB is a flexible C++ library that simplifies the work of adding parallelism
+to complex applications, even if you are not a threading expert.
+
+The library lets you easily write parallel programs that take full advantage of the multi-core performance. Such programs are portable,
+composable and have a future-proof scalability. oneTBB provides you with functions, interfaces, and classes to parallelize and scale the code.
+All you have to do is to use the templates.
+
+The library differs from typical threading packages in the following ways:
+* oneTBB enables you to specify logical parallelism instead of threads.
+* oneTBB targets threading for performance.
+* oneTBB is compatible with other threading packages.
+* oneTBB emphasizes scalable, data parallel programming.
+* oneTBB relies on generic programming.
+
+
+Refer to oneTBB [examples](examples) and [samples](https://github.com/oneapi-src/oneAPI-samples/tree/master/Libraries/oneTBB) to see how you can use the library.
+
+oneTBB is a part of the [UXL Foundation](http://www.uxlfoundation.org) and is an implementation of [oneAPI specification](https://oneapi.io).
+
+> **_NOTE:_** Threading Building Blocks (TBB) is now called oneAPI Threading Building Blocks (oneTBB) to highlight that the tool is a part of the oneAPI ecosystem.
## Release Information
-Here are the latest [Changes](CHANGES) and [Release Notes](doc/Release_Notes.txt) (contains system requirements and known issues).
-Since [2018 U5](https://github.com/01org/tbb/releases/tag/2018_U5) TBB binary packages include [Parallel STL](https://github.com/intel/parallelstl) as a high-level component.
+See [Release Notes](RELEASE_NOTES.md) and [System Requirements](SYSTEM_REQUIREMENTS.md).
## Documentation
-* TBB [tutorial](https://software.intel.com/en-us/tbb-tutorial)
-* TBB general documentation: [stable](https://software.intel.com/en-us/tbb-documentation)
-and [latest](https://www.threadingbuildingblocks.org/docs/help/index.htm)
+* [oneTBB Specification](https://spec.oneapi.com/versions/latest/elements/oneTBB/source/nested-index.html)
+* [oneTBB Developer Guide and Reference](https://oneapi-src.github.io/oneTBB)
+* [Migrating from TBB to oneTBB](https://oneapi-src.github.io/oneTBB/main/tbb_userguide/Migration_Guide.html)
+* [README for the CMake build system](cmake/README.md)
+* [oneTBB Testing Approach](https://oneapi-src.github.io/oneTBB/main/intro/testing_approach.html)
+* [Basic support for the Bazel build system](Bazel.md)
+* [oneTBB Discussions](https://github.com/oneapi-src/oneTBB/discussions)
+* [WASM Support](WASM_Support.md)
+
+## Installation
+See [Installation from Sources](INSTALL.md) to learn how to install oneTBB.
+
+## Governance
+
+The oneTBB project is governed by the UXL Foundation.
+You can get involved in this project in following ways:
+* Join the [Open Source and Specification Working Group](https://github.com/uxlfoundation/foundation/tree/main?tab=readme-ov-file#working-groups) meetings.
+* Join the mailing lists for the [UXL Foundation](https://lists.uxlfoundation.org/g/main/subgroups) to receive meetings schedule and latest updates.
+* Contribute to oneTBB project or oneTBB specification. Read [CONTRIBUTING](./CONTRIBUTING.md) for more information.
## Support
-Please report issues and suggestions via
-[GitHub issues](https://github.com/01org/tbb/issues) or start a topic on the
-[TBB forum](http://software.intel.com/en-us/forums/intel-threading-building-blocks/).
+See our [documentation](./SUPPORT.md) to learn how to request help.
## How to Contribute
-To contribute to TBB, please open a GitHub pull request (preferred) or send us a patch by e-mail.
-Threading Building Blocks is licensed under [Apache License, Version 2.0](LICENSE).
+We welcome community contributions, so check our [Contributing Guidelines](CONTRIBUTING.md)
+to learn more.
+
+Use GitHub Issues for feature requests, bug reports, and minor inquiries. For broader questions and development-related discussions, use GitHub Discussions.
+
+## License
+oneAPI Threading Building Blocks is licensed under [Apache License, Version 2.0](LICENSE.txt).
By its terms, contributions submitted to the project are also done under that license.
## Engineering team contacts
-* [E-mail us.](mailto:inteltbbdevelopers@intel.com)
+* [Email us.](mailto:inteltbbdevelopers@intel.com)
------------------------------------------------------------------------
-Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries.
-
-\* Other names and brands may be claimed as the property of others.
+\* All names and brands may be claimed as the property of others.
diff --git a/src/tbb/RELEASE_NOTES.md b/src/tbb/RELEASE_NOTES.md
new file mode 100644
index 000000000..c9b8e9713
--- /dev/null
+++ b/src/tbb/RELEASE_NOTES.md
@@ -0,0 +1,42 @@
+
+
+# Release Notes
+This document contains changes of oneTBB compared to the last release.
+
+## Table of Contents
+- [Known Limitations](#known-limitations)
+- [Fixed Issues](#fixed-issues)
+
+## :rotating_light: Known Limitations
+- The ``oneapi::tbb::info`` namespace interfaces might unexpectedly change the process affinity mask on Windows* OS systems (see https://github.com/open-mpi/hwloc/issues/366 for details) when using hwloc version lower than 2.5.
+- Using a hwloc version other than 1.11, 2.0, or 2.5 may cause an undefined behavior on Windows OS. See https://github.com/open-mpi/hwloc/issues/477 for details.
+- The NUMA topology may be detected incorrectly on Windows* OS machines where the number of NUMA node threads exceeds the size of 1 processor group.
+- On Windows OS on ARM64*, when compiling an application using oneTBB with the Microsoft* Compiler, the compiler issues a warning C4324 that a structure was padded due to the alignment specifier. Consider suppressing the warning by specifying /wd4324 to the compiler command line.
+- C++ exception handling mechanism on Windows* OS on ARM64* might corrupt memory if an exception is thrown from any oneTBB parallel algorithm (see Windows* OS on ARM64* compiler issue: https://developercommunity.visualstudio.com/t/ARM64-incorrect-stack-unwinding-for-alig/1544293.
+- When CPU resource coordination is enabled, tasks from a lower-priority ``task_arena`` might be executed before tasks from a higher-priority ``task_arena``.
+
+> **_NOTE:_** To see known limitations that impact all versions of oneTBB, refer to [oneTBB Documentation](https://oneapi-src.github.io/oneTBB/main/intro/limitations.html).
+
+
+## :hammer: Fixed Issues
+- Fixed ``parallel_for_each`` algorithm behavior for iterators defining ``iterator_concept`` trait instead of ``iterator_category``.
+- Fixed the redefinition issue for ``std::min`` and ``std::max`` on Windows* OS ([GitHub* #832](https://github.com/oneapi-src/oneTBB/issues/832)).
+- Fixed the incorrect binary search order in ``TBBConfig.cmake``.
+- Enabled the oneTBB library search using the pkg-config tool in Conda packages.
+
+## :octocat: Open-source Contributions Integrated
+- Fixed the compiler warning for missing virtual destructor. Contributed by Elias Engelbert Plank (https://github.com/oneapi-src/oneTBB/pull/1215).
diff --git a/src/tbb/SECURITY.md b/src/tbb/SECURITY.md
new file mode 100644
index 000000000..4926041fc
--- /dev/null
+++ b/src/tbb/SECURITY.md
@@ -0,0 +1,66 @@
+# Security Policy
+As an open-source project, we understand the importance of and responsibility
+for security. This Security Policy outlines our guidelines and procedures to
+ensure the highest level of security and trust for oneTBB users.
+
+## Supported Versions
+Security vulnerabilities are fixed in the [latest version][1]
+and delivered as a patch release. We don't guarantee security fixes to be
+back-ported to older oneTBB versions.
+
+## Report a Vulnerability
+We are very grateful to the security researchers and users that report back
+security vulnerabilities. We investigate every report thoroughly.
+We strongly encourage you to report security vulnerabilities to us privately,
+before disclosing them on public forums or opening a public GitHub* issue.
+
+Report a vulnerability to us in one of two ways:
+* Open a draft **[GitHub* Security Advisory][2]**
+* Send an e-mail to: **security@uxlfoundation.org**.
+Along with the report, provide the following info:
+ * A descriptive title.
+ * Your name and affiliation (if any).
+ * A description of the technical details of the vulnerabilities.
+ * A minimal example of the vulnerability so we can reproduce your findings.
+ * An explanation of who can exploit this vulnerability, and what they gain
+ doing so.
+ * Whether this vulnerability is public or known to third parties. If it is,
+ provide details.
+
+### When Should I Report a Vulnerability?
+* You think you discovered a potential security vulnerability in oneTBB.
+* You are unsure how the potential vulnerability affects oneTBB.
+* You think you discovered a vulnerability in another project or 3rd party
+component on which oneTBB depends. If the issue is not fixed in the 3rd party
+component, try to report directly there first.
+
+### When Should I NOT Report a Vulnerability?
+* You got an automated scan hit and are unable to provide details.
+* You need help using oneTBB for security.
+* You need help applying security-related updates.
+* Your issue is not security-related.
+
+## Security Reports Review Process
+We aim to respond quickly to your inquiry and coordinate a fix and
+disclosure with you. All confirmed security vulnerabilities will be addressed
+according to severity level and impact on oneTBB. Normally, security issues
+are fixed in the next planned release.
+
+## Disclosure Policy
+We will publish security advisories using the
+[**GitHub Security Advisories feature**][3]
+to keep our community well-informed, and will credit you for your findings
+unless you prefer to stay anonymous. We request that you refrain from
+exploiting the vulnerability or making it public before the official disclosure.
+
+We will disclose the vulnerabilities and bugs as soon as possible once
+mitigation is implemented and available.
+
+## Feedback on This Policy
+If you have any suggestions on how this Policy could be improved, submit
+an issue or a pull request to this repository. **Do not** report
+potential vulnerabilities or security flaws via a pull request.
+
+[1]: https://github.com/oneapi-src/oneTBB/releases/latest
+[2]: https://github.com/oneapi-src/oneTBB/security/advisories/new
+[3]: https://github.com/oneapi-src/oneTBB/security/advisories
diff --git a/src/tbb/SUPPORT.md b/src/tbb/SUPPORT.md
new file mode 100644
index 000000000..47bb60a53
--- /dev/null
+++ b/src/tbb/SUPPORT.md
@@ -0,0 +1,35 @@
+
+
+# oneTBB Support
+
+We are committed to providing support and assistance to help you make the most out of oneTBB.
+Use the following methods if you face any challenges.
+
+## Issues
+
+If you have a problem, check out the [GitHub Issues](https://github.com/oneapi-src/oneTBB/issues) to see if the issue you want to address is already reported.
+You may find users that have encountered the same bug or have similar ideas for changes or updates.
+
+You can use issues to report a problem, make a feature request, or add comments on an existing issue.
+
+## Discussions
+
+Visit the [GitHub Discussions](https://github.com/oneapi-src/oneTBB/discussions) to engage with the community, ask questions, or help others.
+
+## Email
+
+Reach out to us privately via [email](mailto:inteltbbdevelopers@intel.com).
\ No newline at end of file
diff --git a/src/tbb/SYSTEM_REQUIREMENTS.md b/src/tbb/SYSTEM_REQUIREMENTS.md
new file mode 100644
index 000000000..7f9d81616
--- /dev/null
+++ b/src/tbb/SYSTEM_REQUIREMENTS.md
@@ -0,0 +1,86 @@
+
+
+# System Requirements
+This document provides details about hardware, operating system, and software prerequisites for the oneAPI Threading Building Blocks (oneTBB).
+
+## Table of Contents
+- [Supported Hardware](#supported-hardware)
+- [Software](#software)
+ - [Supported Operating Systems](#supported-operating-systems)
+ - [Community-Supported Platforms](#community-supported-platforms)
+ - [Supported Compilers](#supported-compilers)
+- [Limitations](#limitations)
+
+
+## Supported Hardware
+- Intel(R) Celeron(R) processor family
+- Intel(R) Core* processor family
+- Intel(R) Xeon(R) processor family
+- Intel(R) Atom* processor family
+- Non-Intel(R) processors compatible with the processors listed above
+
+
+## Software
+
+### Supported Operating Systems
+- Systems with Microsoft* Windows* operating systems:
+ - Microsoft* Windows* 10
+ - Microsoft* Windows* 11
+ - Microsoft* Windows* Server 2019
+ - Microsoft* Windows* Server 2022
+- Systems with Linux* operating systems:
+ - Oracle Linux* 8
+ - Amazon* Linux 2, 2022
+ - Debian* 9, 10, 11
+ - Fedora* 36, 37, 38
+ - Rocky* Linux* 8, 9
+ - Red Hat* Enterprise Linux* 8, 9
+ - SuSE* Linux* Enterprise Server 15
+ - Ubuntu* 20.04, 22.04
+- Systems with macOS* operating systems:
+ - macOS* 12.x, 13.x
+- Systems with Android* operating systems:
+ - Android* 9
+
+### Community-Supported Platforms
+- MinGW*
+- FreeBSD*
+- Microsoft* Windows* on ARM*/ARM64*
+- macOS* on ARM64*
+
+### Supported Compilers
+- Intel* oneAPI DPC++/C++ Compiler
+- Intel® C++ Compiler Classic 2021.1 - 2021.9
+- Microsoft* Visual C++ 14.2 (Microsoft* Visual Studio* 2019, Windows* OS only)
+- Microsoft* Visual C++ 14.3 (Microsoft* Visual Studio* 2022, Windows* OS only)
+- For each supported Linux* operating system, the standard gcc version provided with that operating system is supported:
+ - GNU Compilers (gcc) 8.x – 12.x
+ - GNU C Library (glibc) version 2.28 – 2.36
+ - Clang* 6.0.0 - 13.0.0
+
+## Limitations
+There are some cases where we cannot provide support for your platforms. It includes:
+
+1. The platform is out of official support (met end of life). When you use an unsupported platform, you can face a security risk that can be difficult to resolve.
+2. We do not have the infrastructure to test a platform. Therefore we cannot guarantee that oneTBB works correctly on that platform.
+3. Changes affect more code than just platform-specific macros.
+4. The platform is incompatible with oneTBB. Some platforms may have limitations that prevent oneTBB from working correctly. We cannot provide support in these cases as the issue is beyond our control.
+5. The platform is modified or customized. If you made significant updates to your platform, it might be hard for us to find the root cause of the issue. Therefore, we may not be able to provide support as the modification could affect the oneTBB functionality.
+
+
+We understand that these limitations can be frustrating. Thus, we suggest creating a branch specifically for the unsupported platform, allowing other users to contribute to or use your implementation.
+
diff --git a/src/tbb/WASM_Support.md b/src/tbb/WASM_Support.md
new file mode 100644
index 000000000..6306620d7
--- /dev/null
+++ b/src/tbb/WASM_Support.md
@@ -0,0 +1,81 @@
+
+
+# WASM Support
+
+oneTBB extends its capabilities by offering robust support for ``WASM`` (see ``Limitation`` sections).
+
+``WASM`` stands for WebAssembly, a low-level binary format for executing code in web browsers.
+It is designed to be a portable target for compilers and efficient to parse and execute.
+
+Using oneTBB with WASM, you can take full advantage of parallelism and concurrency while working on web-based applications, interactive websites, and a variety of other WASM-compatible platforms.
+
+oneTBB offers WASM support through the integration with [Emscripten*](https://emscripten.org/docs/introducing_emscripten/index.html), a powerful toolchain for compiling C and C++ code into WASM-compatible runtimes.
+
+## Build
+
+**Prerequisites:** Download and install Emscripten*. See the [instructions](https://emscripten.org/docs/getting_started/downloads.html).
+
+To build the system, run:
+
+```
+mkdir build && cd build
+emcmake cmake .. -DCMAKE_CXX_COMPILER=em++ -DCMAKE_C_COMPILER=emcc -DTBB_STRICT=OFF -DCMAKE_CXX_FLAGS=-Wno-unused-command-line-argument -DTBB_DISABLE_HWLOC_AUTOMATIC_SEARCH=ON -DBUILD_SHARED_LIBS=ON -DTBB_EXAMPLES=ON -DTBB_TEST=ON
+```
+To compile oneTBB without ``pthreads``, set the flag ``-DEMSCRIPTEN_WITHOUT_PTHREAD=true`` in the command above. By default, oneTBB uses the ``pthreads``.
+```
+cmake --build .
+cmake --install .
+```
+Where:
+
+* ``emcmake`` - a tool that sets up the environment for Emscripten*.
+* ``-DCMAKE_CXX_COMPILER=em++`` - specifies the C++ compiler as Emscripten* C++ compiler.
+* ``-DCMAKE_C_COMPILER=emcc`` - specifies the C compiler as Emscripten* C compiler.
+
+
+> **_NOTE:_** See [CMake documentation](https://github.com/oneapi-src/oneTBB/blob/master/cmake/README.md) to learn about other options.
+
+
+## Run Test
+
+To run tests, use:
+
+```
+ctest
+```
+
+# Limitations
+
+You can successfully build your application with oneTBB using WASM, but you may not achieve optimal performance immediately. This is due to the limitation with nested Web Workers: a Web Worker cannot schedule another worker without help from a browser thread. This can lead to unexpected performance outcomes, such as the application running in serial.
+Find more information in the [issue](https://github.com/emscripten-core/emscripten/discussions/21963) in the Emscripten repository.
+To workaround this issue, try one of the following ways:
+1. **Recommended Solution: Use the ``-sPROXY_TO_PTHREAD`` Flag**.
+This flag splits the initial thread into a browser thread and a main thread (proxied by a Web Worker), effectively resolving the issue as the browser thread is always present in the event loop and can participate in Web Workers scheduling. Refer to the [Emscripten documentation](https://emscripten.org/docs/porting/pthreads.html) for more details about ``-sPROXY_TO_PTHREAD`` since using this flag may require refactoring the code.
+2. **Alternative Solution: Warm Up the oneTBB Thread Pool**
+Initialize the oneTBB thread pool before making the first call to oneTBB. This approach forces the browser thread to participate in Web Workers scheduling.
+```cpp
+ int num_threads = tbb::this_task_arena::max_concurrency();
+ std::atomic barrier{num_threads};
+ tbb::parallel_for(0, num_threads, [&barrier] (int) {
+ barrier--;
+ while (barrier > 0) {
+ // Send browser thread to event loop
+ std::this_thread::yield();
+ }
+ }, tbb::static_partitioner{});
+```
+> **_NOTE:_** Be aware that it might cause delays on the browser side.
diff --git a/src/tbb/build/.gitignore b/src/tbb/build/.gitignore
deleted file mode 100644
index 53dc09fc1..000000000
--- a/src/tbb/build/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-lib_*/
diff --git a/src/tbb/build/AIX.gcc.inc b/src/tbb/build/AIX.gcc.inc
deleted file mode 100644
index 4258a708e..000000000
--- a/src/tbb/build/AIX.gcc.inc
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-COMPILE_ONLY = -c -MMD
-PREPROC_ONLY = -E -x c++
-INCLUDE_KEY = -I
-DEFINE_KEY = -D
-OUTPUT_KEY = -o #
-OUTPUTOBJ_KEY = -o #
-PIC_KEY = -fPIC
-WARNING_AS_ERROR_KEY = -Werror
-WARNING_KEY = -Wall
-DYLIB_KEY = -shared
-LIBDL = -ldl
-
-CPLUS = g++
-CONLY = gcc
-LIB_LINK_FLAGS = -shared
-LIBS = -lpthread -ldl
-C_FLAGS = $(CPLUS_FLAGS) -x c
-
-ifeq ($(cfg), release)
- CPLUS_FLAGS = -O2 -DUSE_PTHREAD -pthread
-endif
-ifeq ($(cfg), debug)
- CPLUS_FLAGS = -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -pthread
-endif
-
-ASM=
-ASM_FLAGS=
-
-TBB_ASM.OBJ=
-
-ifeq (powerpc,$(arch))
- CPLUS_FLAGS += -maix64 -Wl,-G
- LIB_LINK_FLAGS += -maix64 -Wl,-b64 -Wl,-brtl -Wl,-G
-endif
-
-#------------------------------------------------------------------------------
-# Setting assembler data.
-#------------------------------------------------------------------------------
-
-ASSEMBLY_SOURCE=ibm_aix51
-ifeq (powerpc,$(arch))
- TBB_ASM.OBJ = atomic_support.o
-endif
-
-#------------------------------------------------------------------------------
-# End of setting assembler data.
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# Setting tbbmalloc data.
-#------------------------------------------------------------------------------
-
-M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
-
-#------------------------------------------------------------------------------
-# End of setting tbbmalloc data.
-#------------------------------------------------------------------------------
diff --git a/src/tbb/build/AIX.inc b/src/tbb/build/AIX.inc
deleted file mode 100644
index 45e3651cf..000000000
--- a/src/tbb/build/AIX.inc
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ifndef arch
- arch:=$(shell uname -p)
- export arch
-endif
-
-ifndef runtime
- gcc_version:=$(shell gcc -dumpfullversion -dumpversion)
- os_version:=$(shell uname -r)
- os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//')
- export runtime:=cc$(gcc_version)_kernel$(os_kernel_version)
-endif
-
-native_compiler := gcc
-export compiler ?= gcc
-debugger ?= gdb
-
-CMD=$(SHELL) -c
-CWD=$(shell pwd)
-RM?=rm -f
-RD?=rmdir
-MD?=mkdir -p
-NUL= /dev/null
-SLASH=/
-MAKE_VERSIONS=sh $(tbb_root)/build/version_info_aix.sh $(VERSION_FLAGS) >version_string.ver
-MAKE_TBBVARS=sh $(tbb_root)/build/generate_tbbvars.sh
-
-ifdef LIBPATH
- export LIBPATH := .:$(LIBPATH)
-else
- export LIBPATH := .
-endif
-
-####### Build settings ########################################################
-
-OBJ = o
-DLL = so
-
-TBB.LST =
-TBB.DEF =
-TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL)
-TBB.LIB = $(TBB.DLL)
-LINK_TBB.LIB = $(TBB.LIB)
-
-MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL)
-MALLOC.LIB = $(MALLOC.DLL)
-LINK_MALLOC.LIB = $(MALLOC.LIB)
-
-TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs)
diff --git a/src/tbb/build/BSD.clang.inc b/src/tbb/build/BSD.clang.inc
deleted file mode 100644
index 042c09b0c..000000000
--- a/src/tbb/build/BSD.clang.inc
+++ /dev/null
@@ -1,106 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-COMPILE_ONLY = -c -MMD
-PREPROC_ONLY = -E -x c++
-INCLUDE_KEY = -I
-DEFINE_KEY = -D
-OUTPUT_KEY = -o #
-OUTPUTOBJ_KEY = -o #
-PIC_KEY = -fPIC
-WARNING_AS_ERROR_KEY = -Werror
-WARNING_KEY = -Wall
-TEST_WARNING_KEY = -Wextra -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor
-WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor -Wno-dangling-else
-DYLIB_KEY = -shared
-EXPORT_KEY = -Wl,--version-script,
-LIBDL =
-
-CPLUS = clang++
-CONLY = clang
-LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
-LIBS += -lpthread
-LINK_FLAGS = -Wl,-rpath-link=. -Wl,-rpath=. -rdynamic
-C_FLAGS = $(CPLUS_FLAGS)
-
-ifeq ($(cfg), release)
- CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD
-endif
-ifeq ($(cfg), debug)
- CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD
-endif
-
-ifneq (,$(stdlib))
- CPLUS_FLAGS += -stdlib=$(stdlib)
- LIB_LINK_FLAGS += -stdlib=$(stdlib)
-endif
-
-TBB_ASM.OBJ=
-MALLOC_ASM.OBJ=
-
-ifeq (intel64,$(arch))
- ITT_NOTIFY = -DDO_ITT_NOTIFY
- CPLUS_FLAGS += -m64
- LIB_LINK_FLAGS += -m64
-endif
-
-ifeq (ia32,$(arch))
- ITT_NOTIFY = -DDO_ITT_NOTIFY
- CPLUS_FLAGS += -m32 -march=pentium4
- LIB_LINK_FLAGS += -m32
-endif
-
-ifeq (ppc64,$(arch))
- CPLUS_FLAGS += -m64
- LIB_LINK_FLAGS += -m64
-endif
-
-ifeq (ppc32,$(arch))
- CPLUS_FLAGS += -m32
- LIB_LINK_FLAGS += -m32
-endif
-
-ifeq (bg,$(arch))
- CPLUS = bgclang++
- CONLY = bgclang
-endif
-
-#------------------------------------------------------------------------------
-# Setting assembler data.
-#------------------------------------------------------------------------------
-ASM = as
-ifeq (intel64,$(arch))
- ASM_FLAGS += --64
-endif
-ifeq (ia32,$(arch))
- ASM_FLAGS += --32
-endif
-ifeq ($(cfg),debug)
- ASM_FLAGS += -g
-endif
-
-ASSEMBLY_SOURCE=$(arch)-gas
-#------------------------------------------------------------------------------
-# End of setting assembler data.
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# Setting tbbmalloc data.
-#------------------------------------------------------------------------------
-
-M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
-
-#------------------------------------------------------------------------------
-# End of setting tbbmalloc data.
-#------------------------------------------------------------------------------
diff --git a/src/tbb/build/BSD.inc b/src/tbb/build/BSD.inc
deleted file mode 100644
index 6ef75dbab..000000000
--- a/src/tbb/build/BSD.inc
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ifndef arch
- ifeq ($(shell uname -m),i386)
- export arch:=ia32
- endif
- ifeq ($(shell uname -m),ia64)
- export arch:=ia64
- endif
- ifeq ($(shell uname -m),amd64)
- export arch:=intel64
- endif
-endif
-
-ifndef runtime
- clang_version:=$(shell clang -v 2>&1 | grep version | sed "s/.*version \([0-9]*\.[0-9]*\).*/\1/")
- os_version:=$(shell uname -r)
- os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//')
- export runtime:=cc$(clang_version)_kernel$(os_kernel_version)
-endif
-
-native_compiler := clang
-export compiler ?= clang
-debugger ?= gdb
-
-CMD=$(SHELL) -c
-CWD=$(shell pwd)
-RM?=rm -f
-RD?=rmdir
-MD?=mkdir -p
-NUL= /dev/null
-SLASH=/
-MAKE_VERSIONS=sh $(tbb_root)/build/version_info_linux.sh $(VERSION_FLAGS) >version_string.ver
-MAKE_TBBVARS=sh $(tbb_root)/build/generate_tbbvars.sh
-
-ifdef LD_LIBRARY_PATH
- export LD_LIBRARY_PATH := .:$(LD_LIBRARY_PATH)
-else
- export LD_LIBRARY_PATH := .
-endif
-
-####### Build settings ########################################################
-
-OBJ = o
-DLL = so
-LIBEXT=so
-
-TBB.LST =
-TBB.DEF =
-TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL)
-TBB.LIB = $(TBB.DLL)
-LINK_TBB.LIB = $(TBB.LIB)
-
-MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL)
-MALLOC.LIB = $(MALLOC.DLL)
-LINK_MALLOC.LIB = $(MALLOC.LIB)
-
-TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs)
diff --git a/src/tbb/build/FreeBSD.gcc.inc b/src/tbb/build/FreeBSD.gcc.inc
deleted file mode 100644
index 653d4a3ed..000000000
--- a/src/tbb/build/FreeBSD.gcc.inc
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-COMPILE_ONLY = -c -MMD
-PREPROC_ONLY = -E -x c++
-INCLUDE_KEY = -I
-DEFINE_KEY = -D
-OUTPUT_KEY = -o #
-OUTPUTOBJ_KEY = -o #
-PIC_KEY = -fPIC
-WARNING_AS_ERROR_KEY = -Werror
-WARNING_KEY = -Wall
-DYLIB_KEY = -shared
-WARNING_SUPPRESS = -Wno-parentheses
-
-CPLUS = g++
-CONLY = gcc
-LIB_LINK_FLAGS = -shared
-LIBS = -lpthread
-C_FLAGS = $(CPLUS_FLAGS)
-
-# gcc 6.0 and later have -flifetime-dse option that controls
-# elimination of stores done outside the object lifetime
-ifneq (,$(shell gcc -dumpfullversion -dumpversion | egrep "^([6-9])"))
- # keep pre-contruction stores for zero initialization
- DSE_KEY = -flifetime-dse=1
-endif
-
-ifeq ($(cfg), release)
- CPLUS_FLAGS = -g -O2 -DUSE_PTHREAD
-endif
-ifeq ($(cfg), debug)
- CPLUS_FLAGS = -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD
-endif
-
-ASM=
-ASM_FLAGS=
-
-TBB_ASM.OBJ=
-MALLOC_ASM.OBJ=
-
-ifeq (ia64,$(arch))
-# Position-independent code (PIC) is a must on IA-64 architecture, even for regular (not shared) executables
- CPLUS_FLAGS += $(PIC_KEY)
-endif
-
-ifeq (intel64,$(arch))
- CPLUS_FLAGS += -m64
- LIB_LINK_FLAGS += -m64
-endif
-
-ifeq (ia32,$(arch))
- CPLUS_FLAGS += -m32
- LIB_LINK_FLAGS += -m32
-endif
-
-#------------------------------------------------------------------------------
-# Setting assembler data.
-#------------------------------------------------------------------------------
-ASSEMBLY_SOURCE=$(arch)-gas
-ifeq (ia64,$(arch))
- ASM=as
- TBB_ASM.OBJ = atomic_support.o lock_byte.o log2.o pause.o
- MALLOC_ASM.OBJ = atomic_support.o lock_byte.o pause.o
-endif
-#------------------------------------------------------------------------------
-# End of setting assembler data.
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# Setting tbbmalloc data.
-#------------------------------------------------------------------------------
-
-M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
-
-#------------------------------------------------------------------------------
-# End of setting tbbmalloc data.
-#------------------------------------------------------------------------------
diff --git a/src/tbb/build/Makefile.rml b/src/tbb/build/Makefile.rml
deleted file mode 100644
index 62983a641..000000000
--- a/src/tbb/build/Makefile.rml
+++ /dev/null
@@ -1,162 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# TODO: investigate why version_string.ver is not complete when $(RML_SERVER.OBJ) is being compiled.
-.NOTPARALLEL:
-
-tbb_root ?= $(TBBROOT)
-BUILDING_PHASE=1
-TEST_RESOURCE = $(RML.RES)
-include $(tbb_root)/build/common.inc
-DEBUG_SUFFIX=$(findstring _debug,_$(cfg))
-
-ifeq (android,$(target))
-$(error "RML is not supported on Android")
-endif
-
-# default target
-default_rml: rml rml_test
-
-RML_ROOT ?= $(tbb_root)/src/rml
-RML_SERVER_ROOT = $(RML_ROOT)/server
-
-VPATH = $(tbb_root)/src/tbb $(tbb_root)/src/tbb/$(ASSEMBLY_SOURCE)
-VPATH += $(RML_ROOT)/server $(RML_ROOT)/client $(RML_ROOT)/test $(tbb_root)/src/test
-
-include $(tbb_root)/build/common_rules.inc
-
-#--------------------------------------------------------------------------
-# Define rules for making the RML server shared library and client objects.
-#--------------------------------------------------------------------------
-
-# Object files that make up RML server
-RML_SERVER.OBJ = rml_server.$(OBJ)
-
-# Object files that RML clients need
-RML_TBB_CLIENT.OBJ ?= rml_tbb.$(OBJ) dynamic_link_rml.$(OBJ)
-RML_OMP_CLIENT.OBJ ?= rml_omp.$(OBJ) omp_dynamic_link.$(OBJ)
-
-RML.OBJ = $(RML_SERVER.OBJ) $(RML_TBB_CLIENT.OBJ) $(RML_OMP_CLIENT.OBJ)
-ifeq (windows,$(tbb_os))
-RML_ASM.OBJ = $(if $(findstring intel64,$(arch)),$(TBB_ASM.OBJ))
-endif
-ifeq (linux,$(tbb_os))
-RML_ASM.OBJ = $(if $(findstring ia64,$(arch)),$(TBB_ASM.OBJ))
-endif
-
-RML_TBB_DEP= cache_aligned_allocator_rml.$(OBJ) dynamic_link_rml.$(OBJ) concurrent_vector_rml.$(OBJ) semaphore_rml.$(OBJ) tbb_misc_rml.$(OBJ) tbb_misc_ex_rml.$(OBJ)
-TBB_DEP_NON_RML_TEST?= cache_aligned_allocator_rml.$(OBJ) dynamic_link_rml.$(OBJ) $(RML_ASM.OBJ) tbb_misc_rml.$(OBJ) tbb_misc_ex_rml.$(OBJ)
-ifeq ($(cfg),debug)
-RML_TBB_DEP+= spin_mutex_rml.$(OBJ)
-TBB_DEP_RML_TEST?= $(RML_ASM.OBJ) tbb_misc_rml.$(OBJ)
-else
-TBB_DEP_RML_TEST?= $(RML_ASM.OBJ)
-endif
-LIBS += $(LIBDL)
-
-INCLUDES += $(INCLUDE_KEY)$(RML_ROOT)/include $(INCLUDE_KEY).
-T_INCLUDES = $(INCLUDES) $(INCLUDE_KEY)$(tbb_root)/src/test $(INCLUDE_KEY)$(RML_SERVER_ROOT)
-
-ifeq ($(rml_wcrm),1)
-CPLUS_FLAGS+=/DRML_USE_WCRM
-endif
-
-# Suppress superfluous warnings for RML compilation
-R_CPLUS_FLAGS = $(subst DO_ITT_NOTIFY,DO_ITT_NOTIFY=0,$(CPLUS_FLAGS)) $(WARNING_SUPPRESS) \
- $(DEFINE_KEY)TBB_USE_THREADING_TOOLS=0 $(DEFINE_KEY)__TBB_RML_STATIC=1 $(DEFINE_KEY)__TBB_NO_IMPLICIT_LINKAGE=1
-
-%.$(OBJ): %.cpp
- $(CPLUS) $(COMPILE_ONLY) $(R_CPLUS_FLAGS) $(PIC_KEY) $(DSE_KEY) $(INCLUDES) $<
-
-ifeq (linux,$(tbb_os))
-omp_dynamic_link.$(OBJ): CPLUS_FLAGS+=-fno-exceptions
-endif
-
-tbb_misc_rml.$(OBJ) $(RML_SERVER.OBJ): version_string.ver
-
-RML_TEST.OBJ = test_job_automaton.$(OBJ) test_thread_monitor.$(OBJ) test_rml_tbb.$(OBJ) test_rml_omp.$(OBJ) test_rml_mixed.$(OBJ)
-
-$(RML_TBB_DEP): %_rml.$(OBJ): %.cpp
- $(CPLUS) $(COMPILE_ONLY) $(OUTPUTOBJ_KEY)$@ $(R_CPLUS_FLAGS) $(PIC_KEY) $(DSE_KEY) $(INCLUDES) $<
-
-$(RML_TEST.OBJ): %.$(OBJ): %.cpp
- $(CPLUS) $(COMPILE_ONLY) $(R_CPLUS_FLAGS) $(PIC_KEY) $(T_INCLUDES) $<
-
-ifneq (,$(RML.DEF))
-rml.def: $(RML.DEF)
- $(CPLUS) $(PREPROC_ONLY) $< $(CPLUS_FLAGS) $(INCLUDES) > $@
-
-LIB_LINK_FLAGS += $(EXPORT_KEY)rml.def
-$(RML.DLL): rml.def
-endif
-
-$(RML.DLL): CPLUS_FLAGS += $(SDL_FLAGS)
-$(RML.DLL): BUILDING_LIBRARY = $(RML.DLL)
-$(RML.DLL): $(RML_TBB_DEP) $(RML_SERVER.OBJ) $(RML.RES) $(RML_NO_VERSION.DLL) $(RML_ASM.OBJ)
- $(LIB_LINK_CMD) $(LIB_OUTPUT_KEY)$(RML.DLL) $(RML_SERVER.OBJ) $(RML_TBB_DEP) $(RML_ASM.OBJ) $(RML.RES) $(LIB_LINK_LIBS) $(LIB_LINK_FLAGS)
-
-ifneq (,$(RML_NO_VERSION.DLL))
-$(RML_NO_VERSION.DLL):
- echo "INPUT ($(RML.DLL))" > $(RML_NO_VERSION.DLL)
-endif
-
-rml: $(RML.DLL) $(RML_TBB_CLIENT.OBJ) $(RML_OMP_CLIENT.OBJ)
-
-#------------------------------------------------------
-# End of rules for making the RML server shared library
-#------------------------------------------------------
-
-#------------------------------------------------------
-# Define rules for making the RML unit tests
-#------------------------------------------------------
-
-add_debug=$(basename $(1))_debug$(suffix $(1))
-cross_suffix=$(if $(crosstest),$(if $(DEBUG_SUFFIX),$(subst _debug,,$(1)),$(call add_debug,$(1))),$(1))
-
-RML_TESTS = test_job_automaton.$(TEST_EXT) test_thread_monitor.$(TEST_EXT)
-RML_CUSTOM_TESTS = test_rml_tbb.$(TEST_EXT) test_rml_omp.$(TEST_EXT) test_rml_mixed.$(TEST_EXT) test_rml_omp_c_linkage.$(TEST_EXT)
-
-test_rml_tbb.$(TEST_EXT): test_rml_tbb.$(OBJ) $(RML_TBB_CLIENT.OBJ) $(TBB_DEP_RML_TEST)
- $(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) test_rml_tbb.$(OBJ) $(RML_TBB_CLIENT.OBJ) $(TBB_DEP_RML_TEST) $(LIBS) $(LINK_FLAGS)
-
-test_rml_omp.$(TEST_EXT): test_rml_omp.$(OBJ) $(RML_OMP_CLIENT.OBJ) $(TBB_DEP_NON_RML_TEST)
- $(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) test_rml_omp.$(OBJ) $(RML_OMP_CLIENT.OBJ) $(TBB_DEP_NON_RML_TEST) $(LIBS) $(LINK_FLAGS)
-
-test_rml_mixed.$(TEST_EXT): test_rml_mixed.$(OBJ) $(RML_TBB_CLIENT.OBJ) $(RML_OMP_CLIENT.OBJ) $(TBB_DEP_RML_TEST)
- $(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) test_rml_mixed.$(OBJ) $(RML_TBB_CLIENT.OBJ) $(RML_OMP_CLIENT.OBJ) $(TBB_DEP_RML_TEST) $(LIBS) $(LINK_FLAGS)
-
-rml_omp_stub.$(OBJ): rml_omp_stub.cpp
- $(CPLUS) $(COMPILE_ONLY) $(M_CPLUS_FLAGS) $(WARNING_SUPPRESS) $(T_INCLUDES) $(PIC_KEY) $<
-
-test_rml_omp_c_linkage.$(TEST_EXT): test_rml_omp_c_linkage.$(OBJ) rml_omp_stub.$(OBJ) omp_dynamic_link.$(OBJ)
- $(CONLY) $(C_FLAGS) $(OUTPUT_KEY)$@ test_rml_omp_c_linkage.$(OBJ) rml_omp_stub.$(OBJ) omp_dynamic_link.$(OBJ) $(LIBS) $(LINK_FLAGS)
-
-$(RML_TESTS): %.$(TEST_EXT): %.$(OBJ) $(TBB_DEP_NON_RML_TEST)
- $(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) $< $(TBB_DEP_NON_RML_TEST) $(LIBS) $(LINK_FLAGS)
-
-### run_cmd is usually empty
-rml_test: $(call cross_suffix,$(RML.DLL)) $(TEST_PREREQUISITE) $(RML_TESTS) $(RML_CUSTOM_TESTS)
- $(run_cmd) ./test_job_automaton.$(TEST_EXT) $(args)
- $(run_cmd) ./test_thread_monitor.$(TEST_EXT) $(args)
- $(run_cmd) ./test_rml_tbb.$(TEST_EXT) $(args)
- $(run_cmd) ./test_rml_omp.$(TEST_EXT) $(args)
- $(run_cmd) ./test_rml_mixed.$(TEST_EXT) $(args)
- $(run_cmd) ./test_rml_omp_c_linkage.$(TEST_EXT) $(args)
-
-#------------------------------------------------------
-# End of rules for making the TBBMalloc unit tests
-#------------------------------------------------------
-
-# Include automatically generated dependencies
--include *.d
diff --git a/src/tbb/build/Makefile.tbb b/src/tbb/build/Makefile.tbb
deleted file mode 100644
index c58f4fb18..000000000
--- a/src/tbb/build/Makefile.tbb
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#------------------------------------------------------------------------------
-# Define rules for making the TBB shared library.
-#------------------------------------------------------------------------------
-
-tbb_root ?= "$(TBBROOT)"
-BUILDING_PHASE=1
-include $(tbb_root)/build/common.inc
-CPLUS_FLAGS += $(SDL_FLAGS)
-DEBUG_SUFFIX=$(findstring _debug,_$(cfg))
-
-#------------------------------------------------------------
-# Define static pattern rules dealing with .cpp source files
-#------------------------------------------------------------
-$(warning CONFIG: cfg=$(cfg) arch=$(arch) compiler=$(compiler) target=$(target) runtime=$(runtime))
-
-default_tbb: $(TBB.DLL)
-.PHONY: default_tbb tbbvars clean
-.PRECIOUS: %.$(OBJ)
-
-VPATH = $(tbb_root)/src/tbb/$(ASSEMBLY_SOURCE) $(tbb_root)/src/tbb $(tbb_root)/src/old $(tbb_root)/src/rml/client
-
-CPLUS_FLAGS += $(PIC_KEY) $(DSE_KEY) $(DEFINE_KEY)__TBB_BUILD=1
-
-# Object files (that were compiled from C++ code) that gmake up TBB
-TBB_CPLUS.OBJ = concurrent_hash_map.$(OBJ) \
- concurrent_queue.$(OBJ) \
- concurrent_vector.$(OBJ) \
- dynamic_link.$(OBJ) \
- itt_notify.$(OBJ) \
- cache_aligned_allocator.$(OBJ) \
- pipeline.$(OBJ) \
- queuing_mutex.$(OBJ) \
- queuing_rw_mutex.$(OBJ) \
- reader_writer_lock.$(OBJ) \
- spin_rw_mutex.$(OBJ) \
- x86_rtm_rw_mutex.$(OBJ) \
- spin_mutex.$(OBJ) \
- critical_section.$(OBJ) \
- mutex.$(OBJ) \
- recursive_mutex.$(OBJ) \
- condition_variable.$(OBJ) \
- tbb_thread.$(OBJ) \
- concurrent_monitor.$(OBJ) \
- semaphore.$(OBJ) \
- private_server.$(OBJ) \
- rml_tbb.$(OBJ) \
- tbb_misc.$(OBJ) \
- tbb_misc_ex.$(OBJ) \
- task.$(OBJ) \
- task_group_context.$(OBJ) \
- governor.$(OBJ) \
- market.$(OBJ) \
- arena.$(OBJ) \
- scheduler.$(OBJ) \
- observer_proxy.$(OBJ) \
- tbb_statistics.$(OBJ) \
- tbb_main.$(OBJ)
-
-# OLD/Legacy object files for backward binary compatibility
-ifeq (,$(findstring $(DEFINE_KEY)TBB_NO_LEGACY,$(CXXFLAGS)))
-TBB_CPLUS_OLD.OBJ = \
- concurrent_vector_v2.$(OBJ) \
- concurrent_queue_v2.$(OBJ) \
- spin_rw_mutex_v2.$(OBJ) \
- task_v2.$(OBJ)
-endif
-
-# Object files that gmake up TBB (TBB_ASM.OBJ is platform-specific)
-TBB.OBJ = $(TBB_CPLUS.OBJ) $(TBB_CPLUS_OLD.OBJ) $(TBB_ASM.OBJ)
-
-# Suppress superfluous warnings for TBB compilation
-WARNING_KEY += $(WARNING_SUPPRESS)
-
-include $(tbb_root)/build/common_rules.inc
-
-ifneq (,$(TBB.DEF))
-tbb.def: $(TBB.DEF) $(TBB.LST)
- $(CPLUS) $(PREPROC_ONLY) $< $(CPLUS_FLAGS) $(INCLUDES) > $@
-
-# LLVM on Windows doesn't need --version-script export
-# https://reviews.llvm.org/D63743
-ifeq (, $(WINARM64_CLANG))
- LIB_LINK_FLAGS += $(EXPORT_KEY)tbb.def
-endif
-$(TBB.DLL): tbb.def
-endif
-
-tbbvars.sh:
- $(MAKE_TBBVARS)
-
-$(TBB.DLL): BUILDING_LIBRARY = $(TBB.DLL)
-$(TBB.DLL): $(TBB.OBJ) $(TBB.RES) tbbvars.sh $(TBB_NO_VERSION.DLL)
- $(LIB_LINK_CMD) $(LIB_OUTPUT_KEY)$(TBB.DLL) $(TBB.OBJ) $(TBB.RES) $(LIB_LINK_LIBS) $(LIB_LINK_FLAGS)
-
-ifneq (,$(TBB_NO_VERSION.DLL))
-$(TBB_NO_VERSION.DLL):
- echo "INPUT ($(TBB.DLL))" > $(TBB_NO_VERSION.DLL)
-endif
-
-#clean:
-# $(RM) *.$(OBJ) *.$(DLL) *.res *.map *.ilk *.pdb *.exp *.manifest *.tmp *.d core core.*[0-9][0-9] *.ver
-
-# Include automatically generated dependencies
--include *.d
diff --git a/src/tbb/build/Makefile.tbbmalloc b/src/tbb/build/Makefile.tbbmalloc
deleted file mode 100644
index 0efafb806..000000000
--- a/src/tbb/build/Makefile.tbbmalloc
+++ /dev/null
@@ -1,260 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# default target
-default_malloc: malloc malloc_test
-
-tbb_root ?= $(TBBROOT)
-BUILDING_PHASE=1
-TEST_RESOURCE = $(MALLOC.RES)
-TESTFILE=tbbmalloc
-include $(tbb_root)/build/common.inc
-DEBUG_SUFFIX=$(findstring _debug,$(call cross_cfg,_$(cfg)))
-
-MALLOC_ROOT ?= $(tbb_root)/src/tbbmalloc
-MALLOC_SOURCE_ROOT ?= $(MALLOC_ROOT)
-
-VPATH = $(tbb_root)/src/tbb/$(ASSEMBLY_SOURCE) $(tbb_root)/src/tbb $(tbb_root)/src/test
-VPATH += $(MALLOC_ROOT) $(MALLOC_SOURCE_ROOT)
-
-CPLUS_FLAGS += $(if $(crosstest),$(DEFINE_KEY)__TBBMALLOC_NO_IMPLICIT_LINKAGE=1)
-
-TEST_SUFFIXES=proxy
-TEST_PREREQUISITE+=$(MALLOC.LIB)
-LINK_FILES+=$(LINK_MALLOC.LIB)
-include $(tbb_root)/build/common_rules.inc
-
-ORIG_CPLUS_FLAGS:=$(CPLUS_FLAGS)
-ORIG_INCLUDES:=$(INCLUDES)
-ORIG_LINK_MALLOC.LIB:=$(LINK_MALLOC.LIB)
-
-#------------------------------------------------------
-# Define rules for making the TBBMalloc shared library.
-#------------------------------------------------------
-
-# Object files that make up TBBMalloc
-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_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)
-# Suppress superfluous warnings for TBBMalloc proxy compilation
-$(PROXY.OBJ): CPLUS_FLAGS += $(WARNING_SUPPRESS)
-
-frontend.$(OBJ): frontend.cpp version_string.ver
- $(CPLUS) $(COMPILE_ONLY) $(M_CPLUS_FLAGS) $(PIC_KEY) $(DSE_KEY) $(M_INCLUDES) $(INCLUDE_KEY). $<
-
-$(PROXY.OBJ): %.$(OBJ): %.cpp
- $(CPLUS) $(COMPILE_ONLY) $(CPLUS_FLAGS) $(PIC_KEY) $(DSE_KEY) $(DEFINE_KEY)__TBBMALLOC_BUILD=1 $(M_INCLUDES) $<
-
-$(MALLOC_CPLUS.OBJ): %.$(OBJ): %.cpp
- $(CPLUS) $(COMPILE_ONLY) $(M_CPLUS_FLAGS) $(PIC_KEY) $(DSE_KEY) $(M_INCLUDES) $<
-
-itt_notify_malloc.$(OBJ): itt_notify.cpp
- $(CPLUS) $(COMPILE_ONLY) $(M_CPLUS_FLAGS) $(PIC_KEY) $(DSE_KEY) $(OUTPUTOBJ_KEY)$@ $(INCLUDES) $<
-
-MALLOC_LINK_FLAGS = $(LIB_LINK_FLAGS)
-PROXY_LINK_FLAGS = $(LIB_LINK_FLAGS)
-
-ifneq (,$(MALLOC.DEF))
-tbbmalloc.def: $(MALLOC.DEF)
- $(CPLUS) $(PREPROC_ONLY) $< $(M_CPLUS_FLAGS) $(WARNING_SUPPRESS) $(INCLUDES) > $@
-
-# LLVM on Windows doesn't need --version-script export
-# https://reviews.llvm.org/D63743
-ifeq (, $(WINARM64_CLANG))
- MALLOC_LINK_FLAGS += $(EXPORT_KEY)tbbmalloc.def
-endif
-$(MALLOC.DLL): tbbmalloc.def
-endif
-
-$(MALLOC.DLL) $(MALLOCPROXY.DLL): CPLUS_FLAGS += $(SDL_FLAGS)
-$(MALLOC.DLL) $(MALLOCPROXY.DLL): M_CPLUS_FLAGS += $(SDL_FLAGS)
-$(MALLOC.DLL): BUILDING_LIBRARY = $(MALLOC.DLL)
-$(MALLOC.DLL): $(MALLOC.OBJ) $(MALLOC.RES) $(MALLOC_NO_VERSION.DLL)
- $(subst $(CPLUS),$(CONLY),$(LIB_LINK_CMD)) $(LIB_OUTPUT_KEY)$(MALLOC.DLL) $(MALLOC.OBJ) $(MALLOC.RES) $(LIB_LINK_LIBS) $(MALLOC_LINK_FLAGS)
-
-ifneq (,$(MALLOCPROXY.DEF))
-tbbmallocproxy.def: $(MALLOCPROXY.DEF)
- $(CPLUS) $(PREPROC_ONLY) $< $(CPLUS_FLAGS) $(WARNING_SUPPRESS) $(INCLUDES) > $@
-
-PROXY_LINK_FLAGS += $(EXPORT_KEY)tbbmallocproxy.def
-$(MALLOCPROXY.DLL): tbbmallocproxy.def
-endif
-
-ifneq (,$(MALLOCPROXY.DLL))
-$(MALLOCPROXY.DLL): BUILDING_LIBRARY = $(MALLOCPROXY.DLL)
-$(MALLOCPROXY.DLL): $(PROXY.OBJ) $(MALLOCPROXY_NO_VERSION.DLL) $(MALLOC.DLL) $(MALLOC.RES)
- $(LIB_LINK_CMD) $(LIB_OUTPUT_KEY)$(MALLOCPROXY.DLL) $(PROXY.OBJ) $(MALLOC.RES) $(LIB_LINK_LIBS) $(LINK_MALLOC.LIB) $(PROXY_LINK_FLAGS)
-endif
-
-ifneq (,$(MALLOC_NO_VERSION.DLL))
-$(MALLOC_NO_VERSION.DLL):
- echo "INPUT ($(MALLOC.DLL))" > $(MALLOC_NO_VERSION.DLL)
-endif
-
-ifneq (,$(MALLOCPROXY_NO_VERSION.DLL))
-$(MALLOCPROXY_NO_VERSION.DLL):
- echo "INPUT ($(MALLOCPROXY.DLL))" > $(MALLOCPROXY_NO_VERSION.DLL)
-endif
-
-malloc: $(MALLOC.DLL) $(MALLOCPROXY.DLL)
-
-malloc_dll: $(MALLOC.DLL)
-
-malloc_proxy_dll: $(MALLOCPROXY.DLL)
-
-.PHONY: malloc malloc_dll malloc_proxy_dll
-
-#------------------------------------------------------
-# End of rules for making the TBBMalloc shared library
-#------------------------------------------------------
-
-#------------------------------------------------------
-# Define rules for making the TBBMalloc unit tests
-#------------------------------------------------------
-
-# --------- The list of TBBMalloc unit tests ----------
-MALLOC_TESTS = test_ScalableAllocator.$(TEST_EXT) \
- test_ScalableAllocator_STL.$(TEST_EXT) \
- test_malloc_compliance.$(TEST_EXT) \
- test_malloc_regression.$(TEST_EXT) \
- test_malloc_init_shutdown.$(TEST_EXT) \
- test_malloc_pools.$(TEST_EXT) \
- test_malloc_pure_c.$(TEST_EXT) \
- test_malloc_whitebox.$(TEST_EXT) \
- test_malloc_used_by_lib.$(TEST_EXT) \
- test_malloc_lib_unload.$(TEST_EXT) \
- test_malloc_shutdown_hang.$(TEST_EXT)
-ifneq (,$(MALLOCPROXY.DLL))
-MALLOC_TESTS += test_malloc_overload.$(TEST_EXT) \
- test_malloc_overload_proxy.$(TEST_EXT) \
- test_malloc_overload_disable.$(TEST_EXT) \
- test_malloc_atexit.$(TEST_EXT) \
- test_malloc_new_handler.$(TEST_EXT)
-endif
-# -----------------------------------------------------
-
-# ------------ Set test specific variables ------------
-# TODO: implement accurate warning suppression for tests to unify with Makefile.test.
-$(MALLOC_TESTS): CPLUS_FLAGS += $(TEST_WARNING_KEY) $(if $(no_exceptions),$(DEFINE_KEY)__TBB_TEST_NO_EXCEPTIONS=1)
-$(MALLOC_TESTS): M_CPLUS_FLAGS += $(TEST_WARNING_KEY) $(if $(no_exceptions),$(DEFINE_KEY)__TBB_TEST_NO_EXCEPTIONS=1)
-$(MALLOC_TESTS): INCLUDES += $(INCLUDE_TEST_HEADERS)
-$(MALLOC_TESTS): M_INCLUDES += $(INCLUDE_TEST_HEADERS)
-
-ifeq (windows.gcc,$(tbb_os).$(compiler))
-test_malloc_overload.$(TEST_EXT): LIBS += $(MALLOCPROXY.LIB)
-endif
-
-MALLOC_M_CPLUS_TESTS = test_malloc_whitebox.$(TEST_EXT) test_malloc_lib_unload.$(TEST_EXT) \
- test_malloc_used_by_lib.$(TEST_EXT)
-MALLOC_NO_LIB_TESTS = test_malloc_whitebox.$(TEST_EXT) test_malloc_lib_unload.$(TEST_EXT) \
- test_malloc_used_by_lib.$(TEST_EXT) test_malloc_overload.$(TEST_EXT)
-MALLOC_LINK_PROXY_TESTS = test_malloc_overload_proxy.$(TEST_EXT) test_malloc_new_handler.$(TEST_EXT)
-MALLOC_ADD_DLL_TESTS = test_malloc_lib_unload.$(TEST_EXT) test_malloc_used_by_lib.$(TEST_EXT) \
- test_malloc_atexit.$(TEST_EXT)
-MALLOC_SUPPRESS_WARNINGS = test_malloc_whitebox.$(TEST_EXT) test_malloc_pure_c.$(TEST_EXT)
-
-$(MALLOC_SUPPRESS_WARNINGS): WARNING_KEY=
-$(MALLOC_SUPPRESS_WARNINGS): TEST_WARNING_KEY=
-$(MALLOC_M_CPLUS_TESTS): CPLUS_FLAGS:=$(M_CPLUS_FLAGS)
-$(MALLOC_M_CPLUS_TESTS): INCLUDES=$(M_INCLUDES)
-$(MALLOC_NO_LIB_TESTS): LINK_MALLOC.LIB=
-$(MALLOC_NO_LIB_TESTS): LINK_FLAGS+=$(LIBDL)
-$(MALLOC_LINK_PROXY_TESTS): LINK_MALLOC.LIB=$(LINK_MALLOCPROXY.LIB)
-ifneq (,$(DYLIB_KEY))
-$(MALLOC_ADD_DLL_TESTS): %.$(TEST_EXT): %_dll.$(DLL)
-$(MALLOC_ADD_DLL_TESTS): TEST_LIBS+=$(@:.$(TEST_EXT)=_dll.$(LIBEXT))
-endif
-
-test_malloc_over%.$(TEST_EXT): CPLUS_FLAGS:=$(subst /MT,/MD,$(M_CPLUS_FLAGS))
-test_malloc_over%.$(TEST_EXT): INCLUDES=$(M_INCLUDES)
-test_malloc_overload_proxy.$(TEST_EXT): LINK_FLAGS+=$(LIBDL)
-
-test_malloc_atexit_dll.$(DLL): CPLUS_FLAGS:=$(subst /MT,/MD,$(M_CPLUS_FLAGS))
-test_malloc_atexit.$(TEST_EXT): CPLUS_FLAGS:=$(subst /MT,/MD,$(M_CPLUS_FLAGS))
-test_malloc_atexit.$(TEST_EXT): LINK_FLAGS+=$(LIBDL)
-# on Ubuntu 11.10 linker called with --as-needed, so dependency on libtbbmalloc_proxy
-# is not created, and malloc overload via linking with -ltbbmalloc_proxy is not working.
-# Overcome with --no-as-needed.
-ifeq (linux.gcc,$(tbb_os).$(compiler))
-test_malloc_atexit.$(TEST_EXT): MALLOCPROXY.LIB := -Wl,--no-as-needed $(MALLOCPROXY.LIB)
-endif
-# The test isn't added to MALLOC_LINK_PROXY_TESTS, because we need both
-# tbbmalloc and proxy libs. For platforms other than Android it's enough
-# to modify LINK_MALLOC.LIB for TEST_EXT target only. But under Android build
-# of DLL and TEST_EXT can be requested independently, so there is no chance
-# to set LINK_MALLOC.LIB in TEST_EXT build rule, and affect DLL build.
-test_malloc_atexit.$(TEST_EXT): LINK_MALLOC.LIB := $(LINK_MALLOC.LIB) $(LINK_MALLOCPROXY.LIB)
-test_malloc_atexit_dll.$(DLL): LINK_MALLOC.LIB := $(LINK_MALLOC.LIB) $(LINK_MALLOCPROXY.LIB)
-
-test_malloc_whitebox.$(TEST_EXT): $(MALLOC_ASM.OBJ) version_string.ver
-test_malloc_whitebox.$(TEST_EXT): INCLUDES+=$(INCLUDE_KEY).
-test_malloc_whitebox.$(TEST_EXT): LINK_FILES+=$(MALLOC_ASM.OBJ)
-
-# Some _dll targets need to restore variables since they are changed by parent
-# target-specific rule of its .exe targets
-test_malloc_lib_unload_dll.$(DLL): CPLUS_FLAGS=$(ORIG_CPLUS_FLAGS) $(if $(no_exceptions),$(DEFINE_KEY)__TBB_TEST_NO_EXCEPTIONS=1)
-test_malloc_lib_unload_dll.$(DLL): INCLUDES=$(ORIG_INCLUDES) $(INCLUDE_TEST_HEADERS)
-
-test_malloc_used_by_lib_dll.$(DLL): CPLUS_FLAGS:=$(subst /MT,/LD,$(M_CPLUS_FLAGS))
-test_malloc_used_by_lib_dll.$(DLL): LINK_FILES+=$(ORIG_LINK_MALLOC.LIB)
-test_malloc_used_by_lib_dll.$(DLL): LIBDL=
-
-# The test needs both tbb and tbbmalloc.
-# For static build LINK_TBB.LIB is resolved in tbb.a static lib name (Linux), which cannot be found (dynamic tbb is used only).
-# In order to link properly, have to define LINK_TBB.LIB ourselves except for Windows where linkage with *.lib file expected.
-ifdef extra_inc
-ifneq ($(tbb_os),windows)
-DYNAMIC_TBB_LIB=$(LIBPREF)tbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL)
-endif
-endif
-test_malloc_shutdown_hang.$(TEST_EXT): LINK_FILES += $(if $(DYNAMIC_TBB_LIB), $(DYNAMIC_TBB_LIB), $(LINK_TBB.LIB))
-
-# -----------------------------------------------------
-
-# ---- The list of TBBMalloc test running commands ----
-# run_cmd is usually empty
-malloc_test: $(MALLOC.DLL) malloc_test_no_depends
-
-malloc_test_no_depends: $(TEST_PREREQUISITE) $(MALLOC_TESTS)
- $(run_cmd) ./test_malloc_pools.$(TEST_EXT) $(args) 1:4
-ifneq (,$(MALLOCPROXY.DLL))
- $(run_cmd) ./test_malloc_atexit.$(TEST_EXT) $(args)
- $(run_cmd) $(TEST_LAUNCHER) -l $(MALLOCPROXY.DLL) ./test_malloc_overload.$(TEST_EXT) $(args)
- $(run_cmd) $(TEST_LAUNCHER) ./test_malloc_overload_proxy.$(TEST_EXT) $(args)
- $(run_cmd) ./test_malloc_overload_disable.$(TEST_EXT) $(args)
- $(run_cmd) $(TEST_LAUNCHER) ./test_malloc_new_handler.$(TEST_EXT) $(args)
-endif
- $(run_cmd) $(TEST_LAUNCHER) ./test_malloc_lib_unload.$(TEST_EXT) $(args)
- $(run_cmd) $(TEST_LAUNCHER) ./test_malloc_used_by_lib.$(TEST_EXT)
- $(run_cmd) ./test_malloc_whitebox.$(TEST_EXT) $(args) 1:4
- $(run_cmd) $(TEST_LAUNCHER) -u ./test_malloc_compliance.$(TEST_EXT) $(args) 1:4
- $(run_cmd) ./test_ScalableAllocator.$(TEST_EXT) $(args)
- $(run_cmd) ./test_ScalableAllocator_STL.$(TEST_EXT) $(args)
- $(run_cmd) ./test_malloc_regression.$(TEST_EXT) $(args)
- $(run_cmd) ./test_malloc_init_shutdown.$(TEST_EXT) $(args)
- $(run_cmd) ./test_malloc_pure_c.$(TEST_EXT) $(args)
- $(run_cmd) ./test_malloc_shutdown_hang.$(TEST_EXT)
-# -----------------------------------------------------
-
-#------------------------------------------------------
-# End of rules for making the TBBMalloc unit tests
-#------------------------------------------------------
-
-# Include automatically generated dependencies
--include *.d
diff --git a/src/tbb/build/Makefile.tbbproxy b/src/tbb/build/Makefile.tbbproxy
deleted file mode 100644
index 196361cc0..000000000
--- a/src/tbb/build/Makefile.tbbproxy
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# default target
-default_tbbproxy: tbbproxy tbbproxy_test
-
-tbb_root ?= $(TBBROOT)
-BUILDING_PHASE=1
-include $(tbb_root)/build/common.inc
-DEBUG_SUFFIX=$(findstring _debug,_$(cfg))
-
-PROXY_ROOT ?= $(tbb_root)/src/tbbproxy
-PROXY_SOURCE_ROOT ?= $(PROXY_ROOT)
-
-VPATH = $(tbb_root)/src/tbb/$(ASSEMBLY_SOURCE) $(tbb_root)/src/tbb $(tbb_root)/src/test
-VPATH += $(PROXY_ROOT) $(PROXY_SOURCE_ROOT)
-
-CPLUS_FLAGS += $(DEFINE_KEY)__TBB_DLL_NAME=$(TBB.DLL)
-CPLUS_FLAGS += $(DEFINE_KEY)__TBB_LST=$(TBB.LST)
-CPLUS_FLAGS += $(foreach dir,$(VPATH),$(INCLUDE_KEY)$(dir))
-CPLUS_FLAGS += $(PIC_KEY) $(DSE_KEY)
-
-include $(tbb_root)/build/common_rules.inc
-
-#------------------------------------------------------
-# Define rules for making the TBB Proxy static library.
-#------------------------------------------------------
-
-# Object files that make up TBB Proxy
-PROXY_CPLUS.OBJ = tbbproxy.$(OBJ)
-PROXY_ASM.OBJ = tbbproxy-asm.$(OBJ)
-PROXY.OBJ := $(PROXY_CPLUS.OBJ) $(PROXY_ASM.OBJ)
-
-# Not using intrinsics prevents undesired dependence on ICL libraries (e.g. libirc).
-# Not using default libs prevents link issues caused by different CRT versions in tbbproxy and in an app.
-$(PROXY.OBJ): CPLUS_FLAGS += $(DEFINE_KEY)ARCH_$(arch) $(DEFINE_KEY)OS_$(tbb_os) $(NOINTRINSIC_KEY) $(NODEFAULTLIB_KEY)
-
-$(PROXY_CPLUS.OBJ): CPLUS_FLAGS+=$(if $(filter windows.%cl,$(tbb_os).$(compiler)),/Fdtbbproxy$(DEBUG_SUFFIX).pdb)
-$(PROXY_CPLUS.OBJ): %.$(OBJ): %.cpp
- $(CPLUS) $(COMPILE_ONLY) $(CPLUS_FLAGS) $(INCLUDES) $<
-
-$(PROXY.LIB): $(PROXY.OBJ)
- $(AR) $(AR_FLAGS) $(AR_OUTPUT_KEY)$@ $^
-
-.PRECIOUS : %.$(ASMEXT)
-tbbproxy-asm.$(ASMEXT) : tbbproxy-$(tbb_os).$(ASMEXT) $(TBB.LST) $(TBB-OBJECTS.LST)
- $(CPLUS) $(PREPROC_ONLY) $< $(INCLUDES) $(CPLUS_FLAGS) $(DEFINE_KEY)__TBB_BUILD=1 > $@
-
-.PHONY: tbbproxy
-ifeq (windows,$(tbb_os))
-tbbproxy: $(PROXY.LIB)
-else
-tbbproxy:
-endif
-
-#------------------------------------------------------
-# End of rules for making the TBB Proxy static library
-#------------------------------------------------------
-
-#------------------------------------------------------
-# Define rules for making the TBB Proxy unit tests
-#------------------------------------------------------
-
-add_debug=$(basename $(1))_debug$(suffix $(1))
-cross_suffix=$(if $(crosstest),$(if $(DEBUG_SUFFIX),$(subst _debug,,$(1)),$(call add_debug,$(1))),$(1))
-
-PROXY_LIB = $(call cross_suffix,$(PROXY.LIB))
-PROXY_TESTS_SRCS = test_runtime_loader.cpp
-PROXY_TESTS_OBJS = $(PROXY_TESTS_SRCS:.cpp=.$(OBJ))
-PROXY_TESTS_EXES = $(PROXY_TESTS_OBJS:.$(OBJ)=.$(TEST_EXT))
-
-# Run rules.
-.PHONY: tbbproxy_test
-ifeq (windows,$(tbb_os))
-tbbproxy_test: $(call cross_suffix,$(PROXY.LIB)) $(TEST_PREREQUISITE) $(PROXY_TESTS_EXES)
- $(run_cmd) ./test_runtime_loader.$(TEST_EXT) $(args)
-else
-tbbproxy_test:
-endif
-
-# Link rules.
-$(PROXY_TESTS_EXES): %.$(TEST_EXT): %.$(OBJ) $(PROXY_LIB)
- $(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) $< $(PROXY_LIB) $(LIBS) $(LIBDL) $(LINK_FLAGS)
-
-# Compilation rules.
-$(PROXY_TESTS_OBJS): %.$(OBJ): %.cpp
- $(CPLUS) $(COMPILE_ONLY) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $(OUTPUT_KEY)$@ $<
-
-#------------------------------------------------------
-# End of rules for making the TBB Proxy unit tests
-#------------------------------------------------------
-
-# Include automatically generated dependencies
--include *.d
diff --git a/src/tbb/build/Makefile.test b/src/tbb/build/Makefile.test
deleted file mode 100644
index dc801ab8e..000000000
--- a/src/tbb/build/Makefile.test
+++ /dev/null
@@ -1,314 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#------------------------------------------------------------------------------
-# Define rules for making the TBB tests.
-#------------------------------------------------------------------------------
-.PHONY: default test_tbb_plain test_tbb_openmp test_tbb_cilk test_tbb_old clean
-
-default: test_tbb_plain test_tbb_openmp test_tbb_cilk test_tbb_old
-
-tbb_root ?= $(TBBROOT)
-BUILDING_PHASE=1
-TEST_RESOURCE = $(TBB.RES)
-TESTFILE=test
-include $(tbb_root)/build/common.inc
-DEBUG_SUFFIX=$(findstring _debug,$(call cross_cfg,_$(cfg)))
-
-#------------------------------------------------------------
-# Define static pattern rules dealing with .cpp source files
-#------------------------------------------------------------
-
-VPATH = $(tbb_root)/src/tbb/$(ASSEMBLY_SOURCE) $(tbb_root)/src/tbb $(tbb_root)/src/rml/client $(tbb_root)/src/old $(tbb_root)/src/test $(tbb_root)/src/perf
-CPLUS_FLAGS += $(if $(crosstest),$(DEFINE_KEY)__TBB_NO_IMPLICIT_LINKAGE=1) \
- $(if $(no_exceptions),$(DEFINE_KEY)__TBB_TEST_NO_EXCEPTIONS=1) \
- $(if $(LINK_TBB.LIB),$(DEFINE_KEY)TEST_USES_TBB=1)
-
-TEST_PREREQUISITE+=$(TBB.LIB)
-LINK_FILES+=$(LINK_TBB.LIB)
-
-ifdef use_proxy
- USE_PROXY_FLAG = $(DEFINE_KEY)HARNESS_USE_RUNTIME_LOADER
- CPLUS_FLAGS += $(USE_PROXY_FLAG)
- LINK_TBB.LIB = $(PROXY.LIB)
- LIBS += $(LIBDL)
-endif
-
-TEST_SUFFIXES=secondary compiler_builtins pic
-include $(tbb_root)/build/common_rules.inc
-
-# Rules for the tests, which use TBB in a dynamically loadable library
-test_model_plugin.$(TEST_EXT): LINK_TBB.LIB =
-test_model_plugin.$(TEST_EXT): CPLUS_FLAGS := $(CPLUS_FLAGS:$(USE_PROXY_FLAG)=)
-test_model_plugin.$(TEST_EXT): LIBS += $(LIBDL)
-ifneq (,$(DYLIB_KEY))
-test_model_plugin.$(TEST_EXT): test_model_plugin_dll.$(DLL)
-endif
-
-# tbb_misc.$(OBJ) has to be specified here (instead of harness_inject_scheduler.h) because it carries dependency on version_string.ver
-SCHEDULER_DEPENDENCIES = $(TBB_ASM.OBJ) tbb_misc.$(OBJ)
-
-# These executables don't depend on the TBB library, but include core .cpp files directly
-SCHEDULER_DIRECTLY_INCLUDED = test_task_leaks.$(TEST_EXT) \
- test_task_assertions.$(TEST_EXT) \
- test_fast_random.$(TEST_EXT) \
- test_global_control_whitebox.$(TEST_EXT) \
- test_concurrent_queue_whitebox.$(TEST_EXT)
-
-# Necessary to locate version_string.ver referenced from directly included tbb_misc.cpp
-INCLUDES += $(INCLUDE_KEY). $(INCLUDE_TEST_HEADERS)
-
-$(SCHEDULER_DIRECTLY_INCLUDED): CPLUS_FLAGS += $(DSE_KEY)
-$(SCHEDULER_DIRECTLY_INCLUDED): WARNING_KEY += $(WARNING_SUPPRESS)
-$(SCHEDULER_DIRECTLY_INCLUDED): LIBS += $(LIBDL)
-#tbb.lib must not be linked to scheduler white box tests in order to not violate ODR
-$(SCHEDULER_DIRECTLY_INCLUDED): LINK_TBB.LIB =
-$(SCHEDULER_DIRECTLY_INCLUDED): LINK_FILES += $(SCHEDULER_DEPENDENCIES)
-$(SCHEDULER_DIRECTLY_INCLUDED): $(SCHEDULER_DEPENDENCIES)
-
-# test_tbb_header detects "multiple definition" linker error using the test that covers the whole library
-TWICE_LINKED_TESTS = test_tbb_header.$(TEST_EXT) \
- test_concurrent_unordered_set.$(TEST_EXT)
-
-%_secondary.$(OBJ): CPLUS_FLAGS+=$(DEFINE_KEY)__TBB_TEST_SECONDARY=1
-
-# Detecting "multiple definition" linker error using the test that covers the whole library
-$(TWICE_LINKED_TESTS): %.$(TEST_EXT): %.$(OBJ) %_secondary.$(OBJ)
-$(TWICE_LINKED_TESTS): LINK_FILES+=$(@:.$(TEST_EXT)=_secondary.$(OBJ))
-
-# Checks that TBB works correctly in position independent code
-%_pic.$(OBJ): CPLUS_FLAGS+=$(PIC_KEY)
-%_pic.$(OBJ): CPLUS_FLAGS+=$(DEFINE_KEY)__TBB_TEST_PIC=1
-
-# Test of generic gcc port and icc intrinsics port
-%_compiler_builtins.$(TEST_EXT): LINK_TBB.LIB =
-%_compiler_builtins.$(OBJ): CPLUS_FLAGS+=$(DEFINE_KEY)__TBB_TEST_BUILTINS=1 $(DEFINE_KEY)TBB_USE_ASSERT=0
-
-# dynamic_link tests don't depend on the TBB library
-test_dynamic_link%.$(TEST_EXT): LINK_TBB.LIB =
-test_dynamic_link.$(TEST_EXT): LIBS += $(LIBDL)
-
-# Resolving issue with the number of sections that an object file can contain
-ifneq (,$(BIGOBJ_KEY))
-TEST_BIGOBJ = test_opencl_node.$(TEST_EXT) \
- test_atomic.$(TEST_EXT) \
- test_concurrent_unordered_set.$(TEST_EXT) \
- test_concurrent_unordered_map.$(TEST_EXT) \
- test_join_node_key_matching.$(TEST_EXT) \
- test_join_node_msg_key_matching.$(TEST_EXT) \
- test_join_node.$(TEST_EXT)
-$(TEST_BIGOBJ): override CXXFLAGS += $(BIGOBJ_KEY)
-endif
-
-# TODO: remove repetition of .$(TEST_EXT) in the list bellow
-# The main list of TBB tests
-TEST_TBB_PLAIN.EXE = test_assembly.$(TEST_EXT) \
- test_global_control.$(TEST_EXT) \
- test_tbb_fork.$(TEST_EXT) \
- test_assembly_compiler_builtins.$(TEST_EXT) \
- test_aligned_space.$(TEST_EXT) \
- test_atomic.$(TEST_EXT) \
- test_atomic_pic.$(TEST_EXT) \
- test_atomic_compiler_builtins.$(TEST_EXT) \
- test_blocked_range.$(TEST_EXT) \
- test_blocked_range2d.$(TEST_EXT) \
- test_blocked_range3d.$(TEST_EXT) \
- test_blocked_rangeNd.$(TEST_EXT) \
- test_concurrent_queue.$(TEST_EXT) \
- test_concurrent_vector.$(TEST_EXT) \
- test_concurrent_unordered_set.$(TEST_EXT) \
- test_concurrent_unordered_map.$(TEST_EXT) \
- test_concurrent_hash_map.$(TEST_EXT) \
- test_enumerable_thread_specific.$(TEST_EXT) \
- test_handle_perror.$(TEST_EXT) \
- test_halt.$(TEST_EXT) \
- test_model_plugin.$(TEST_EXT) \
- test_mutex.$(TEST_EXT) \
- test_mutex_native_threads.$(TEST_EXT) \
- test_rwm_upgrade_downgrade.$(TEST_EXT) \
- test_cache_aligned_allocator.$(TEST_EXT) \
- test_cache_aligned_allocator_STL.$(TEST_EXT) \
- test_parallel_for.$(TEST_EXT) \
- test_parallel_reduce.$(TEST_EXT) \
- test_parallel_sort.$(TEST_EXT) \
- test_parallel_scan.$(TEST_EXT) \
- test_parallel_while.$(TEST_EXT) \
- test_parallel_do.$(TEST_EXT) \
- test_pipeline.$(TEST_EXT) \
- test_pipeline_with_tbf.$(TEST_EXT) \
- test_parallel_pipeline.$(TEST_EXT) \
- test_lambda.$(TEST_EXT) \
- test_task_scheduler_init.$(TEST_EXT) \
- test_task_scheduler_observer.$(TEST_EXT) \
- test_task.$(TEST_EXT) \
- test_tbb_thread.$(TEST_EXT) \
- test_std_thread.$(TEST_EXT) \
- test_tick_count.$(TEST_EXT) \
- test_inits_loop.$(TEST_EXT) \
- test_yield.$(TEST_EXT) \
- test_eh_tasks.$(TEST_EXT) \
- test_eh_algorithms.$(TEST_EXT) \
- test_eh_flow_graph.$(TEST_EXT) \
- test_parallel_invoke.$(TEST_EXT) \
- test_task_group.$(TEST_EXT) \
- test_ittnotify.$(TEST_EXT) \
- test_parallel_for_each.$(TEST_EXT) \
- test_tbb_header.$(TEST_EXT) \
- test_combinable.$(TEST_EXT) \
- test_task_auto_init.$(TEST_EXT) \
- test_task_arena.$(TEST_EXT) \
- test_concurrent_monitor.$(TEST_EXT) \
- test_semaphore.$(TEST_EXT) \
- test_critical_section.$(TEST_EXT) \
- test_reader_writer_lock.$(TEST_EXT) \
- test_tbb_condition_variable.$(TEST_EXT) \
- test_intrusive_list.$(TEST_EXT) \
- test_concurrent_priority_queue.$(TEST_EXT) \
- test_task_priority.$(TEST_EXT) \
- test_task_enqueue.$(TEST_EXT) \
- test_task_steal_limit.$(TEST_EXT) \
- test_hw_concurrency.$(TEST_EXT) \
- test_fp.$(TEST_EXT) \
- test_tuple.$(TEST_EXT) \
- test_flow_graph.$(TEST_EXT) \
- test_broadcast_node.$(TEST_EXT) \
- test_continue_node.$(TEST_EXT) \
- test_function_node.$(TEST_EXT) \
- test_limiter_node.$(TEST_EXT) \
- test_join_node.$(TEST_EXT) \
- test_join_node_key_matching.$(TEST_EXT) \
- test_join_node_msg_key_matching.$(TEST_EXT) \
- test_buffer_node.$(TEST_EXT) \
- test_queue_node.$(TEST_EXT) \
- test_priority_queue_node.$(TEST_EXT) \
- test_sequencer_node.$(TEST_EXT) \
- test_source_node.$(TEST_EXT) \
- test_overwrite_node.$(TEST_EXT) \
- test_write_once_node.$(TEST_EXT) \
- test_indexer_node.$(TEST_EXT) \
- test_multifunction_node.$(TEST_EXT) \
- test_split_node.$(TEST_EXT) \
- test_static_assert.$(TEST_EXT) \
- test_aggregator.$(TEST_EXT) \
- test_concurrent_lru_cache.$(TEST_EXT) \
- test_examples_common_utility.$(TEST_EXT) \
- test_dynamic_link.$(TEST_EXT) \
- test_parallel_for_vectorization.$(TEST_EXT) \
- test_tagged_msg.$(TEST_EXT) \
- test_partitioner_whitebox.$(TEST_EXT) \
- test_flow_graph_whitebox.$(TEST_EXT) \
- test_composite_node.$(TEST_EXT) \
- test_async_node.$(TEST_EXT) \
- test_async_msg.$(TEST_EXT) \
- test_tbb_version.$(TEST_EXT) # insert new files right above
-
-# These tests depend on other technologies
-TEST_TBB_SPECIAL.EXE = test_openmp.$(TEST_EXT) \
- test_cilk_interop.$(TEST_EXT) \
- test_gfx_factory.$(TEST_EXT) \
- test_opencl_node.$(TEST_EXT)
-
-# skip mode_plugin for now
-skip_tests += test_model_plugin
-
-ifdef OPENMP_FLAG
-test_openmp.$(TEST_EXT): CPLUS_FLAGS += $(OPENMP_FLAG)
-
-test_tbb_openmp: $(TEST_PREREQUISITE) test_openmp.$(TEST_EXT)
- $(run_cmd) ./test_openmp.$(TEST_EXT) 1:4
-else
-test_tbb_openmp:
- @echo "OpenMP is not available"
-endif
-
-ifdef CILK_AVAILABLE
-# Workaround on cilkrts linkage known issue (see Intel(R) C++ Composer XE 2011 Release Notes)
-# The issue reveals itself if a version of binutils is prior to 2.17
-ifeq (linux_icc,$(tbb_os)_$(compiler))
-test_cilk_interop.$(TEST_EXT): LIBS += -lcilkrts
-test_gfx_factory.$(TEST_EXT): LIBS += -lcilkrts
-endif
-test_tbb_cilk: test_cilk_interop.$(TEST_EXT)
- $(run_cmd) ./test_cilk_interop.$(TEST_EXT) $(args)
-else
-test_tbb_cilk:
- @echo "Intel(R) Cilk(TM) Plus is not available"
-endif
-
-test_opencl_node.$(TEST_EXT): LIBS += $(OPENCL.LIB)
-
-$(TEST_TBB_PLAIN.EXE) $(TEST_TBB_SPECIAL.EXE): WARNING_KEY += $(TEST_WARNING_KEY)
-
-# Run tests that are in SCHEDULER_DIRECTLY_INCLUDED and TEST_TBB_PLAIN.EXE but not in skip_tests (which is specified by user)
-TESTS_TO_RUN := $(filter-out $(addsuffix .$(TEST_EXT),$(skip_tests)),$(TEST_TBB_PLAIN.EXE) $(SCHEDULER_DIRECTLY_INCLUDED))
-
-# This definition intentionally consists of two blank lines
-define eol
-
-
-endef
-
-# First build the targets, then run them
-# Form a list of commands separated with end of line
-# Note that usually run_cmd is empty, and tests run directly
-
-test_tbb_plain: $(TEST_PREREQUISITE) $(TESTS_TO_RUN)
- $(foreach test, $(TESTS_TO_RUN), $(run_cmd) ./$(test) $(args) $(eol))
-
-
-# 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
-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)
-
-TEST_TBB_OLD.EXE = $(subst .$(OBJ),.$(TEST_EXT),$(TEST_TBB_OLD.OBJ))
-
-ifeq (,$(NO_LEGACY_TESTS))
-test_tbb_old: $(TEST_PREREQUISITE) $(TEST_TBB_OLD.EXE)
- $(run_cmd) ./test_concurrent_vector_v2.$(TEST_EXT) $(args) 1:4
- $(run_cmd) ./test_concurrent_queue_v2.$(TEST_EXT) $(args) 1:4
- $(run_cmd) ./test_mutex_v2.$(TEST_EXT) $(args) 1
- $(run_cmd) ./test_mutex_v2.$(TEST_EXT) $(args) 2
- $(run_cmd) ./test_mutex_v2.$(TEST_EXT) $(args) 4
- $(run_cmd) ./test_task_scheduler_observer_v3.$(TEST_EXT) $(args) 1:4
-else
-test_tbb_old:
- @echo Legacy tests skipped
-endif
-
-ifneq (,$(codecov))
-codecov_gen:
- profmerge
- codecov $(if $(findstring -,$(codecov)),$(codecov),) -demang -comp $(tbb_root)/build/codecov.txt
-endif
-
-time_%: time_%.$(TEST_EXT) $(TEST_PREREQUISITE)
- $(run_cmd) ./$< $(args)
-
-
-# for some reason, "perf_%.$(TEST_EXT): perf_dll.$(DLL)" does not work TODO: find out how to apply pattern here
-perf_sched.$(TEST_EXT): perf_dll.$(DLL)
-perf_%.$(TEST_EXT): TEST_LIBS = perf_dll.$(LIBEXT)
-perf_%: perf_%.$(TEST_EXT) $(TEST_PREREQUISITE)
- $(run_cmd) ./$< $(args)
-
-clean_%:
- $(RM) $*.$(OBJ) $*.exe $*.$(DLL) $*.$(LIBEXT) $*.res $*.map $*.ilk $*.pdb $*.exp $*.*manifest $*.tmp $*.d *.ver
-
-clean:
- $(RM) *.$(OBJ) *.exe *.$(DLL) *.$(LIBEXT) *.res *.map *.ilk *.pdb *.exp *.manifest *.tmp *.d pgopti.* *.dyn core core.*[0-9][0-9] *.ver
-
-# Include automatically generated dependencies
--include *.d
diff --git a/src/tbb/build/SunOS.gcc.inc b/src/tbb/build/SunOS.gcc.inc
deleted file mode 100644
index 75cef4a84..000000000
--- a/src/tbb/build/SunOS.gcc.inc
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-COMPILE_ONLY = -c -MMD
-PREPROC_ONLY = -E -x c++
-INCLUDE_KEY = -I
-DEFINE_KEY = -D
-OUTPUT_KEY = -o #
-OUTPUTOBJ_KEY = -o #
-PIC_KEY = -fPIC
-WARNING_AS_ERROR_KEY = -Werror
-WARNING_KEY = -Wall
-TEST_WARNING_KEY = -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra
-WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor
-DYLIB_KEY = -shared
-LIBDL = -ldl
-
-CPLUS = g++
-CONLY = gcc
-LIB_LINK_FLAGS = -shared
-LIBS = -lpthread -lrt -ldl
-C_FLAGS = $(CPLUS_FLAGS) -x c
-
-ifeq ($(cfg), release)
- CPLUS_FLAGS = -g -O2 -DUSE_PTHREAD
-endif
-ifeq ($(cfg), debug)
- CPLUS_FLAGS = -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD
-endif
-
-ASM=
-ASM_FLAGS=
-
-TBB_ASM.OBJ=
-
-ifeq (ia64,$(arch))
-# Position-independent code (PIC) is a must for IA-64
- CPLUS_FLAGS += $(PIC_KEY)
-endif
-
-ifeq (intel64,$(arch))
- CPLUS_FLAGS += -m64
- LIB_LINK_FLAGS += -m64
-endif
-
-ifeq (ia32,$(arch))
- CPLUS_FLAGS += -m32
- LIB_LINK_FLAGS += -m32
-endif
-
-# for some gcc versions on Solaris, -m64 may imply V9, but perhaps not everywhere (TODO: verify)
-# RcppParallel: CRAN uses 32-bit SPARC so we force that here
-ifeq (sparc,$(arch))
- CPLUS_FLAGS += -m32
- LIB_LINK_FLAGS += -m32
-# CPLUS_FLAGS += -mcpu=v9 -m64
-# LIB_LINK_FLAGS += -mcpu=v9 -m64
-endif
-
-#------------------------------------------------------------------------------
-# Setting assembler data.
-#------------------------------------------------------------------------------
-ASSEMBLY_SOURCE=$(arch)-gas
-ifeq (ia64,$(arch))
- ASM=ias
- TBB_ASM.OBJ = atomic_support.o lock_byte.o log2.o pause.o
-endif
-#------------------------------------------------------------------------------
-# End of setting assembler data.
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# Setting tbbmalloc data.
-#------------------------------------------------------------------------------
-
-M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
-
-#------------------------------------------------------------------------------
-# End of setting tbbmalloc data.
-#------------------------------------------------------------------------------
diff --git a/src/tbb/build/SunOS.inc b/src/tbb/build/SunOS.inc
deleted file mode 100644
index 569d3214a..000000000
--- a/src/tbb/build/SunOS.inc
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ifndef arch
- arch:=$(shell uname -p)
- ifeq ($(arch),i386)
- ifeq ($(shell isainfo -b),64)
- arch:=intel64
- else
- arch:=ia32
- endif
- endif
- export arch
-# For non-IA systems running Sun OS, 'arch' will contain whatever is printed by uname -p.
-# In particular, for SPARC architecture it will contain "sparc".
-endif
-
-ifndef runtime
- gcc_version:=$(shell gcc -dumpfullversion -dumpversion)
- os_version:=$(shell uname -r)
- os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//')
- export runtime:=cc$(gcc_version)_kernel$(os_kernel_version)
-endif
-
-ifeq ($(arch),sparc)
- native_compiler := gcc
- export compiler ?= gcc
-else
- native_compiler := suncc
- export compiler ?= suncc
-endif
-# debugger ?= gdb
-
-CMD=$(SHELL) -c
-CWD=$(shell pwd)
-RM?=rm -f
-RD?=rmdir
-MD?=mkdir -p
-NUL= /dev/null
-SLASH=/
-MAKE_VERSIONS=bash $(tbb_root)/build/version_info_sunos.sh $(VERSION_FLAGS) >version_string.ver
-MAKE_TBBVARS=bash $(tbb_root)/build/generate_tbbvars.sh
-
-ifdef LD_LIBRARY_PATH
- export LD_LIBRARY_PATH := .:$(LD_LIBRARY_PATH)
-else
- export LD_LIBRARY_PATH := .
-endif
-
-####### Build settings ########################################################
-
-OBJ = o
-DLL = so
-LIBEXT=so
-
-TBB.LST =
-TBB.DEF =
-TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL)
-TBB.LIB = $(TBB.DLL)
-LINK_TBB.LIB = $(TBB.LIB)
-
-MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL)
-MALLOC.LIB = $(MALLOC.DLL)
-LINK_MALLOC.LIB = $(MALLOC.LIB)
-
-MALLOCPROXY.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL)
-
-TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs)
diff --git a/src/tbb/build/SunOS.suncc.inc b/src/tbb/build/SunOS.suncc.inc
deleted file mode 100644
index db9d1a6a7..000000000
--- a/src/tbb/build/SunOS.suncc.inc
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-COMPILE_ONLY = -c -xMMD -errtags
-PREPROC_ONLY = -E -xMMD
-INCLUDE_KEY = -I
-DEFINE_KEY = -D
-OUTPUT_KEY = -o #
-OUTPUTOBJ_KEY = -o #
-PIC_KEY = -KPIC
-DYLIB_KEY = -G
-LIBDL = -ldl
-# WARNING_AS_ERROR_KEY = -errwarn=%all
-WARNING_AS_ERROR_KEY = Warning as error
-# Supported Solaris Studio* 12.2 and above, remove ',inlasmpnu' in the line below to build by compiler prior Solaris Studio* 12.2
-WARNING_SUPPRESS = -erroff=unassigned,attrskipunsup,badargtype2w,badbinaryopw,wbadasg,wvarhidemem,inlasmpnu
-tbb_strict=0
-
-# RcppParallel patch: -library=stlport4
-CPLUS = CC -library=stlport4
-CONLY = cc
-
-OPENMP_FLAG = -xopenmp
-LIB_LINK_FLAGS = -G -R . -M$(tbb_root)/build/suncc.map.pause
-LINK_FLAGS += -M$(tbb_root)/build/suncc.map.pause
-LIBS = -lpthread -lrt -R .
-C_FLAGS = $(CPLUS_FLAGS)
-
-#TODO: the $(stdlib) instead of hard-wiring STLPort
-ifeq ($(cfg), release)
- CPLUS_FLAGS = -mt -xO2 -g -library=stlport4 -DUSE_PTHREAD $(WARNING_SUPPRESS)
-endif
-ifeq ($(cfg), debug)
- CPLUS_FLAGS = -mt -DTBB_USE_DEBUG -g -library=stlport4 -DUSE_PTHREAD $(WARNING_SUPPRESS)
-endif
-
-ASM=
-ASM_FLAGS=
-
-TBB_ASM.OBJ=
-
-ifeq (intel64,$(arch))
- CPLUS_FLAGS += -m64
- ASM_FLAGS += -m64
- LIB_LINK_FLAGS += -m64
-endif
-
-ifeq (ia32,$(arch))
- CPLUS_FLAGS += -m32
- LIB_LINK_FLAGS += -m32
-endif
-
-# TODO: verify whether -m64 implies V9 on relevant Sun Studio versions
-# (those that handle gcc assembler syntax)
-ifeq (sparc,$(arch))
- CPLUS_FLAGS += -m64
- LIB_LINK_FLAGS += -m64
-endif
-
-export TBB_CUSTOM_VARS_SH=export CXXFLAGS="-I$${TBBROOT}/include -library=stlport4 $(CXXFLAGS) -M$${TBBROOT}/build/suncc.map.pause"
-export TBB_CUSTOM_VARS_CSH=setenv CXXFLAGS "-I$${TBBROOT}/include -library=stlport4 $(CXXFLAGS) -M$${TBBROOT}/build/suncc.map.pause"
-
-#------------------------------------------------------------------------------
-# Setting assembler data.
-#------------------------------------------------------------------------------
-ASSEMBLY_SOURCE=$(arch)-fbe
-#------------------------------------------------------------------------------
-# End of setting assembler data.
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# Setting tbbmalloc data.
-#------------------------------------------------------------------------------
-M_INCLUDES = $(INCLUDES) -I$(MALLOC_ROOT) -I$(MALLOC_SOURCE_ROOT)
-M_CPLUS_FLAGS = $(CPLUS_FLAGS)
-#------------------------------------------------------------------------------
-# End of setting tbbmalloc data.
-#------------------------------------------------------------------------------
diff --git a/src/tbb/build/android.clang.inc b/src/tbb/build/android.clang.inc
deleted file mode 100644
index 40b3149b4..000000000
--- a/src/tbb/build/android.clang.inc
+++ /dev/null
@@ -1,126 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-COMPILE_ONLY = -c -MMD
-PREPROC_ONLY = -E -x c++
-INCLUDE_KEY = -I
-DEFINE_KEY = -D
-OUTPUT_KEY = -o #
-OUTPUTOBJ_KEY = -o #
-PIC_KEY = -fPIC
-WARNING_AS_ERROR_KEY = -Werror
-WARNING_KEY = -Wall
-SDL_FLAGS = -fPIE -fPIC -fstack-protector -Wformat -Wformat-security
-TEST_WARNING_KEY = -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra
-
-WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor
-DYLIB_KEY = -shared
-EXPORT_KEY = -Wl,--version-script,
-LIBDL = -ldl
-
-CPLUS = $(TARGET_CXX)
-CONLY = $(TARGET_CC)
-
-# -soname is necessary for proper linkage to TBB prebuilt libraries when building application with Android SDK
-LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY) -z relro -z now
-
-# pie is necessary for test executables to work and might be removed if newer NDK will add it implicitly
-PIE_FLAG = -pie
-ifeq ($(APP_PIE), false)
- PIE_FLAG=
-endif
-
-LINK_FLAGS = -Wl,-rpath-link=. -rdynamic
-C_FLAGS = $(CPLUS_FLAGS)
-
-ifeq ($(cfg), release)
- SDL_FLAGS += -D_FORTIFY_SOURCE=2
- CPLUS_FLAGS = -O2
-endif
-ifeq ($(cfg), debug)
- CPLUS_FLAGS = -g -O0 $(DEFINE_KEY)TBB_USE_DEBUG
-endif
-
-CPLUS_FLAGS += $(DEFINE_KEY)USE_PTHREAD $(DEFINE_KEY)_GLIBCXX_HAVE_FENV_H
-
-ifneq (,$(findstring $(arch),ia32 intel64))
- CPLUS_FLAGS += $(DEFINE_KEY)DO_ITT_NOTIFY
-endif
-
-ifeq (0, $(dynamic_load))
- CPLUS_FLAGS += $(DEFINE_KEY)__TBB_DYNAMIC_LOAD_ENABLED=0
-endif
-
-# Paths to the NDK prebuilt tools and libraries
-ifeq (,$(findstring $(ndk_version), $(foreach v, 7 8 9 10 11 12 13 14 15,r$(v) r$(v)b r$(v)c r$(v)d r$(v)e)))
- # Since Android* NDK r16 another sysroot and isystem paths have to be specified
- CPLUS_FLAGS += --sysroot=$(NDK_ROOT)/sysroot -isystem $(NDK_ROOT)/sysroot/usr/include/$(TRIPLE)
- # Android* version flag required since r16
- CPLUS_FLAGS += -D__ANDROID_API__=$(API_LEVEL)
-else
- CPLUS_FLAGS += --sysroot=$(SYSROOT)
-endif
-
-# Library sysroot flag
-LIB_LINK_FLAGS += --sysroot=$(SYSROOT)
-# Flag for test executables
-LINK_FLAGS += --sysroot=$(SYSROOT)
-
-LIBS = -L$(CPLUS_LIB_PATH) -lc++_shared
-ifeq (,$(findstring $(ndk_version),$(foreach v, 7 8 9 10 11,r$(v) r$(v)b r$(v)c r$(v)d r$(v)e)))
- LIBS += -lc++abi
- ifeq (arm,$(arch))
- LIBS += -lunwind
- endif
-endif
-
-ifeq (arm,$(arch))
- CPLUS_FLAGS += $(DEFINE_KEY)__TBB_64BIT_ATOMICS=0
-endif
-
-CPLUS_FLAGS += $(TARGET_CFLAGS)
-LIB_LINK_FLAGS += $(TARGET_CFLAGS) $(TARGET_LDFLAGS) -L$(CPLUS_LIB_PATH)
-
-#------------------------------------------------------------------------------
-# Setting assembler data.
-#------------------------------------------------------------------------------
-TBB_ASM.OBJ=
-MALLOC_ASM.OBJ=
-
-ASM = $(tbb_tool_prefix)as
-ifeq (intel64,$(arch))
- ASM_FLAGS += --64
-endif
-ifeq (ia32,$(arch))
- ASM_FLAGS += --32
-endif
-ifeq ($(cfg),debug)
- ASM_FLAGS += -g
-endif
-
-ASSEMBLY_SOURCE=$(arch)-gas
-#------------------------------------------------------------------------------
-# End of setting assembler data.
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# Setting tbbmalloc data.
-#------------------------------------------------------------------------------
-
-M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
-
-#------------------------------------------------------------------------------
-# End of setting tbbmalloc data.
-#------------------------------------------------------------------------------
diff --git a/src/tbb/build/android.gcc.inc b/src/tbb/build/android.gcc.inc
deleted file mode 100644
index 13b29fb8a..000000000
--- a/src/tbb/build/android.gcc.inc
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-COMPILE_ONLY = -c -MMD
-PREPROC_ONLY = -E -x c++
-INCLUDE_KEY = -I
-DEFINE_KEY = -D
-OUTPUT_KEY = -o #
-OUTPUTOBJ_KEY = -o #
-PIC_KEY = -fPIC
-WARNING_AS_ERROR_KEY = -Werror
-WARNING_KEY = -Wall
-TEST_WARNING_KEY = -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra
-
-WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor
-DYLIB_KEY = -shared
-EXPORT_KEY = -Wl,--version-script,
-LIBDL = -ldl
-
-CPLUS = $(tbb_tool_prefix)g++
-CONLY = $(tbb_tool_prefix)gcc
-
-# -soname is necessary for proper linkage to TBB prebuilt libraries when building application with Android SDK
-LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
-
-# pie is necessary for test executables to work and might be removed if newer NDK will add it implicitly
-PIE_FLAG = -pie
-ifeq ($(APP_PIE), false)
- PIE_FLAG=
-endif
-
-LINK_FLAGS = -Wl,-rpath-link=. -rdynamic
-C_FLAGS = $(CPLUS_FLAGS)
-
-ifeq ($(cfg), release)
- CPLUS_FLAGS = -O2
-endif
-ifeq ($(cfg), debug)
- CPLUS_FLAGS = -g -O0 $(DEFINE_KEY)TBB_USE_DEBUG
-endif
-
-CPLUS_FLAGS += $(DEFINE_KEY)USE_PTHREAD $(DEFINE_KEY)_GLIBCXX_HAVE_FENV_H
-
-ifneq (,$(findstring $(arch),ia32 intel64))
- CPLUS_FLAGS += $(DEFINE_KEY)DO_ITT_NOTIFY
-endif
-
-ifeq (0, $(dynamic_load))
- CPLUS_FLAGS += $(DEFINE_KEY)__TBB_DYNAMIC_LOAD_ENABLED=0
-endif
-
-
-# Paths to the NDK prebuilt tools and libraries
-CPLUS_FLAGS += --sysroot=$(SYSROOT)
-LIB_LINK_FLAGS += --sysroot=$(SYSROOT)
-LIBS = -L$(CPLUS_LIB_PATH) -lgnustl_shared
-
-ifeq (ia32,$(arch))
- # TODO: Determine best setting of -march and add to CPLUS_FLAGS
- CPLUS_FLAGS += -m32
- LIB_LINK_FLAGS += -m32
-else ifeq (intel64,$(arch))
- CPLUS_FLAGS += -m64
- LIB_LINK_FLAGS += -m64
-else ifeq (arm,$(arch))
- CPLUS_FLAGS += -march=armv7-a $(DEFINE_KEY)TBB_USE_GCC_BUILTINS=1 $(DEFINE_KEY)__TBB_64BIT_ATOMICS=0
-else ifeq (arm64,$(arch))
- CPLUS_FLAGS += -march=armv8-a
-endif
-
-#------------------------------------------------------------------------------
-# Setting assembler data.
-#------------------------------------------------------------------------------
-TBB_ASM.OBJ=
-MALLOC_ASM.OBJ=
-
-ASM = $(tbb_tool_prefix)as
-ifeq (intel64,$(arch))
- ASM_FLAGS += --64
-endif
-ifeq (ia32,$(arch))
- ASM_FLAGS += --32
-endif
-ifeq ($(cfg),debug)
- ASM_FLAGS += -g
-endif
-
-ASSEMBLY_SOURCE=$(arch)-gas
-#------------------------------------------------------------------------------
-# End of setting assembler data.
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# Setting tbbmalloc data.
-#------------------------------------------------------------------------------
-
-M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
-
-#------------------------------------------------------------------------------
-# End of setting tbbmalloc data.
-#------------------------------------------------------------------------------
diff --git a/src/tbb/build/android.icc.inc b/src/tbb/build/android.icc.inc
deleted file mode 100644
index 921a1f07f..000000000
--- a/src/tbb/build/android.icc.inc
+++ /dev/null
@@ -1,116 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-COMPILE_ONLY = -c -MMD
-PREPROC_ONLY = -E -x c++
-INCLUDE_KEY = -I
-DEFINE_KEY = -D
-OUTPUT_KEY = -o #
-OUTPUTOBJ_KEY = -o #
-PIC_KEY = -fPIC
-WARNING_AS_ERROR_KEY = -Werror
-WARNING_KEY =
-TEST_WARNING_KEY = -Wshadow -Woverloaded-virtual -Wextra
-
-WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor
-DYLIB_KEY = -shared
-EXPORT_KEY = -Wl,--version-script,
-LIBDL = -ldl
-
-CPLUS = icpc
-CONLY = icc
-
-# -soname is necessary for proper linkage to TBB prebuilt libraries when building application with Android SDK
-LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY)
-
-# pie is necessary for test executables to work and might be removed if newer NDK will add it implicitly
-PIE_FLAG = -pie
-ifeq ($(APP_PIE), false)
- PIE_FLAG=
-endif
-
-LINK_FLAGS = -Wl,-rpath-link=. -rdynamic
-C_FLAGS = $(CPLUS_FLAGS)
-
-ifeq ($(cfg), release)
- CPLUS_FLAGS = -O2
-endif
-ifeq ($(cfg), debug)
- CPLUS_FLAGS = -g -O0 $(DEFINE_KEY)TBB_USE_DEBUG
-endif
-
-CPLUS_FLAGS += $(DEFINE_KEY)USE_PTHREAD $(DEFINE_KEY)_GLIBCXX_HAVE_FENV_H
-
-ifneq (,$(findstring $(arch),ia32 intel64))
- CPLUS_FLAGS += $(DEFINE_KEY)DO_ITT_NOTIFY
-endif
-
-ifeq (0, $(dynamic_load))
- CPLUS_FLAGS += $(DEFINE_KEY)__TBB_DYNAMIC_LOAD_ENABLED=0
-endif
-
-
-# Paths to the NDK prebuilt tools and libraries
-CPLUS_FLAGS += --sysroot=$(SYSROOT)
-LIB_LINK_FLAGS += --sysroot=$(SYSROOT)
-# the -static-intel flag is to remove the need to copy Intel-specific libs to the device.
-LIBS = -L$(CPLUS_LIB_PATH) -lgnustl_shared -static-intel
-
-ifeq (ia32,$(arch))
- # TODO: Determine best setting of -march and add to CPLUS_FLAGS
- CPLUS_FLAGS += -m32 -march=pentium4 -falign-stack=maintain-16-byte
- LIB_LINK_FLAGS += -m32
-else
- ifeq (intel64,$(arch))
- CPLUS_FLAGS += -m64
- LIB_LINK_FLAGS += -m64
- endif
-endif
-
-ifeq (arm,$(findstring arm,$(arch)))
- $(error "Unsupported architecture $(arch) for icc compiler")
-endif
-
-#------------------------------------------------------------------------------
-# Setting assembler data.
-#------------------------------------------------------------------------------
-TBB_ASM.OBJ=
-MALLOC_ASM.OBJ=
-
-ASM = $(tbb_tool_prefix)as
-ifeq (intel64,$(arch))
- ASM_FLAGS += --64
-endif
-ifeq (ia32,$(arch))
- ASM_FLAGS += --32
-endif
-ifeq ($(cfg),debug)
- ASM_FLAGS += -g
-endif
-
-ASSEMBLY_SOURCE=$(arch)-gas
-#------------------------------------------------------------------------------
-# End of setting assembler data.
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# Setting tbbmalloc data.
-#------------------------------------------------------------------------------
-
-M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions
-
-#------------------------------------------------------------------------------
-# End of setting tbbmalloc data.
-#------------------------------------------------------------------------------
diff --git a/src/tbb/build/android.inc b/src/tbb/build/android.inc
deleted file mode 100644
index 893b33c16..000000000
--- a/src/tbb/build/android.inc
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# Extra gmake command-line parameters for use with Android:
-#
-# dlopen_workaround: Some OS versions need workaround for dlopen to avoid recursive calls.
-#
-
-####### Detections and Commands ###############################################
-
-ifeq (android,$(findstring android,$(tbb_os)))
- $(error TBB only supports cross-compilation for Android. Specify "target=android" instead.)
-endif
-
-ifndef BUILDING_PHASE
- ifneq ("command line","$(origin arch)")
- ifeq (icc,$(compiler))
- export COMPILER_VERSION := ICC: $(shell icc -V &1 | grep 'Version')
- ifneq (,$(findstring running on IA-32, $(COMPILER_VERSION)))
- export arch:=ia32
- else ifneq (,$(findstring running on Intel(R) 64, $(COMPILER_VERSION)))
- export arch:=intel64
- else
- $(error "No support for Android in $(COMPILER_VERSION)")
- endif
-
- else
- ifdef ANDROID_SERIAL
- uname_m:=$(shell adb shell uname -m)
- ifeq (i686,$(uname_m))
- export arch:=ia32
- else
- export arch:=$(uname_m)
- endif
- endif
- endif
- endif
-endif
-
-ifeq ("$(arch)","")
- $(error "No target architecture specified and \'ANDROID_SERIAL\' environment variable specifying target device not set")
-endif
-
-# Android platform only supported from TBB 4.1 forward
-NO_LEGACY_TESTS = 1
-
-
diff --git a/src/tbb/build/android.linux.inc b/src/tbb/build/android.linux.inc
deleted file mode 100644
index 39767b697..000000000
--- a/src/tbb/build/android.linux.inc
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-####### Detections and Commands ###############################################
-
-# Must set def_prefix according to target architecture detected above
-ifeq (ia32,$(arch))
- def_prefix = lin32
-endif
-ifeq (arm,$(findstring arm,$(arch)))
- def_prefix = lin32
-endif
-ifeq (64,$(findstring 64,$(arch)))
- def_prefix = lin64
-endif
-
-ifdef ndk_version
- $(warning "NDK version $(ndk_version)")
-else
- $(warning "NDK version not set in environment, using \'unknown\' instead.")
- ndk_version:=unknown
-endif
-
-export runtime:=$(target)_NDK$(ndk_version)_version_$(target_os_version)
-
-AR = $(tbb_tool_prefix)ar
-MAKE_VERSIONS=sh $(tbb_root)/build/version_info_android.sh $(VERSION_FLAGS) >version_string.ver
-
-####### Build settings ########################################################
-
-# No SONAME_SUFFIX for Android allowed in library names
-TBB.LST = $(tbb_root)/src/tbb/$(def_prefix)-tbb-export.lst
-TBB.DEF = $(TBB.LST:.lst=.def)
-TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL)
-TBB.LIB = $(TBB.DLL)
-TBB_NO_VERSION.DLL=
-LINK_TBB.LIB = $(TBB.LIB)
-
-MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-tbbmalloc-export.def
-MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL)
-MALLOC.LIB = $(MALLOC.DLL)
-MALLOC_NO_VERSION.DLL=
-LINK_MALLOC.LIB = $(MALLOC.LIB)
-
-MALLOCPROXY.DEF = $(MALLOC_ROOT)/$(def_prefix)-proxy-export.def
-MALLOCPROXY.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL)
-MALLOCPROXY_NO_VERSION.DLL=
-MALLOCPROXY.LIB = $(MALLOCPROXY.DLL)
-LINK_MALLOCPROXY.LIB = $(MALLOCPROXY.LIB)
-
-TEST_LAUNCHER=
-run_cmd ?= -sh $(tbb_root)/build/android.linux.launcher.sh $(largs)
diff --git a/src/tbb/build/android.linux.launcher.sh b/src/tbb/build/android.linux.launcher.sh
deleted file mode 100644
index a394750c2..000000000
--- a/src/tbb/build/android.linux.launcher.sh
+++ /dev/null
@@ -1,144 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Usage:
-# android.linux.launcher.sh [-v] [-q] [-s] [-r ] [-u] [-l ]
-# where: -v enables verbose output
-# where: -q enables quiet mode
-# where: -s runs the test in stress mode (until non-zero exit code or ctrl-c pressed)
-# where: -r specifies number of times to repeat execution
-# where: -u is ignored on Android
-# where: -l specifies the library name to be assigned to LD_PRELOAD
-#
-# Libs and executable necessary for testing should be present in the current directory before running.
-# ANDROID_SERIAL must be set to the connected Android target device name for file transfer and test runs.
-# ANDROID_TEST_DIRECTORY may be set to the directory used for testing on the Android target device; otherwise,
-# the default directory used is "/data/local/tmp/$(basename $PWD)".
-# Note: Do not remove the redirections to '/dev/null' in the script, otherwise the nightly test system will fail.
-
-do_cleanup() #
-{ #
- adb pull $targetdir/events.txt events.txt > /dev/null 2>&1 #
- # Remove target directory on the device
- adb shell "rm -r ${targetdir}; mkdir -p ${targetdir}" > /dev/null 2>&1 #
-} #
-do_trap_cleanup() #
-{ #
- do_cleanup #
- exit -1 #
-} #
-while getopts "qvsr:ul:" flag #
-do case $flag in #
- s ) # Stress testing mode
- echo Doing stress testing. Press Ctrl-C to terminate
- run_env='stressed() { while $*; do :; done; }; ' #
- run_prefix="stressed $run_prefix" ;; #
- r ) # Repeats test n times
- run_env="repeated() { for i in $(seq -s ' ' 1 $OPTARG) ; do echo \$i of $OPTARG:; \$*; done; }; " #
- run_prefix="repeated $run_prefix" ;; #
- l ) # Additional library
- ldpreload="$OPTARG " ;; #
- u ) # Stack limit
- ;; #
- q ) # Quiet mode, removes 'done' but prepends any other output by test name
- OUTPUT='2>&1 | sed -e "s/done//;/^[[:space:]]*$/d;s!^!$exename: !"' ;; #
- v ) # Verbose mode
- SUPPRESS='' #
- verbose=1 ;; #
-esac done #
-shift `expr $OPTIND - 1` #
-[ -z "$OUTPUT" ] && OUTPUT='| sed -e "s/\\r$//"' #
-[ $verbose ] || SUPPRESS='>/dev/null' #
-# Collect the executable name
-exename=$(basename $1) #
-shift #
-# Prepare the target directory on the device
-currentdir=$(basename $PWD) #
-targetdir=${ANDROID_TEST_DIRECTORY:-/data/local/tmp/$currentdir} #
-do_cleanup #
-trap do_trap_cleanup INT # if someone hits control-c, cleanup the device
-# Collect the list of files to transfer to the target device, starting with executable itself.
-fnamelist="$exename" #
-# Add the C++ standard library from the NDK, which is required for all tests on Android.
-if [ ! -z "${LIB_STL_ANDROID}" ]; then #
- fnamelist="$fnamelist ${LIB_STL_ANDROID}" #
-else #
- fnamelist="$fnamelist libc++_shared.so" #
-fi #
-# Find the TBB libraries and add them to the list.
-# Add TBB libraries from the current directory that contains libtbb* files
-files="$(ls libtbb* 2> /dev/null)" #
-[ -z "$files" ] || fnamelist="$fnamelist $files" #
-# Add any libraries built for specific tests.
-exeroot=${exename%\.*} #
-files="$(ls ${exeroot}*.so ${exeroot}*.so.* 2> /dev/null)" #
-[ -z "$files" ] || fnamelist="$fnamelist $files" #
-# TODO: Add extra libraries from the Intel(R) Compiler for certain tests
-# found=$(echo $exename | egrep 'test_malloc_atexit\|test_malloc_lib_unload' 2> /dev/null)
-# if [ ! -z $found ] ; then
-# fnamelist="$fnamelist ${compiler_path_lib}/libimf.so \
-# ${compiler_path_lib}/libsvml.so \
-# ${compiler_path_lib}/libintlc.so.5"
-# fi
-
-# Transfer collected executable and library files to the target device.
-transfers_ok=1 #
-for fullname in $fnamelist; do { #
- if [ -r $fullname ]; then { #
- # Transfer the executable and libraries to top-level target directory
- [ $verbose ] && echo -n "Pushing $fullname: " #
- eval "adb push $fullname ${targetdir}/$(basename $fullname) $SUPPRESS 2>&1" #
- }; else { #
- echo "Error: required file ${currentdir}/${fullname} for test $exename not available for transfer." #
- transfers_ok=0 #
- }; fi #
-}; done #
-if [ "${transfers_ok}" = "0" ]; then { #
- do_cleanup #
- exit -1 #
-}; fi #
-# Transfer input files used by example codes by scanning the executable argument list.
-for fullname in "$@"; do { #
- if [ -r $fullname ]; then { #
- directory=$(dirname $fullname) #
- filename=$(basename $fullname) #
- # strip leading "." from fullname if present
- if [ "$directory" = "\." ]; then { #
- directory="" #
- fullname=$filename #
- }; fi #
- # Create the target directory to hold input file if necessary
- if [ ! -z $directory ]; then { #
- eval "adb shell 'mkdir $directory' $SUPPRESS 2>&1" #
- }; fi #
- # Transfer the input file to corresponding directory on target device
- [ $verbose ] && echo -n "Pushing $fullname: " #
- eval "adb push $fullname ${targetdir}/$fullname $SUPPRESS 2>&1" #
- }; fi #
-}; done #
-# Set LD_PRELOAD if necessary
-[ -z "$ldpreload" ] || run_prefix="LD_PRELOAD='$ldpreload' $run_prefix" #
-[ $verbose ] && echo Running $run_prefix ./$exename $* #
-run_env="$run_env cd $targetdir; export LD_LIBRARY_PATH=." #
-[ -z "$VIRTUAL_MACHINE" ] || run_env="$run_env; export VIRTUAL_MACHINE=$VIRTUAL_MACHINE" #
-# The return_code file is the best way found to return the status of the test execution when using adb shell.
-eval 'adb shell "$run_env; $run_prefix ./$exename $* || echo -n \$? >error_code"' "${OUTPUT}" #
-# Capture the return code string and remove the trailing \r from the return_code file contents
-err=`adb shell "cat $targetdir/error_code 2>/dev/null"` #
-[ -z $err ] || echo $exename: exited with error $err #
-do_cleanup #
-# Return the exit code of the test.
-exit $err #
diff --git a/src/tbb/build/android.macos.inc b/src/tbb/build/android.macos.inc
deleted file mode 100644
index 3efe09dfe..000000000
--- a/src/tbb/build/android.macos.inc
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-####### Detections and Commands ###############################################
-
-# Must set def_prefix according to target architecture detected above
-ifeq (ia32,$(arch))
- def_prefix = lin32
-endif
-ifeq (arm,$(findstring arm,$(arch)))
- def_prefix = lin32
-endif
-ifeq (64,$(findstring 64,$(arch)))
- def_prefix = lin64
-endif
-
-ifdef ndk_version
- $(warning "NDK version $(ndk_version)")
-else
- $(warning "NDK version not set in environment, using \'unknown\' instead.")
- ndk_version:=unknown
-endif
-
-export runtime:=$(target)_NDK$(ndk_version)_version_$(target_os_version)
-
-AR = $(tbb_tool_prefix)ar
-MAKE_VERSIONS=sh $(tbb_root)/build/version_info_android.sh $(VERSION_FLAGS) >version_string.ver
-
-####### Build settings ########################################################
-
-# No SONAME_SUFFIX for Android allowed in library names
-TBB.LST = $(tbb_root)/src/tbb/$(def_prefix)-tbb-export.lst
-TBB.DEF = $(TBB.LST:.lst=.def)
-TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL)
-TBB.LIB = $(TBB.DLL)
-TBB_NO_VERSION.DLL=
-LINK_TBB.LIB = $(TBB.LIB)
-
-MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-tbbmalloc-export.def
-MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL)
-MALLOC.LIB = $(MALLOC.DLL)
-MALLOC_NO_VERSION.DLL=
-LINK_MALLOC.LIB = $(MALLOC.LIB)
-
-MALLOCPROXY.DEF = $(MALLOC_ROOT)/$(def_prefix)-proxy-export.def
-MALLOCPROXY.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL)
-MALLOCPROXY_NO_VERSION.DLL=
-MALLOCPROXY.LIB = $(MALLOCPROXY.DLL)
-LINK_MALLOCPROXY.LIB = $(MALLOCPROXY.LIB)
-
-TBB.RES =
-MALLOC.RES =
-RML.RES =
-TBB.MANIFEST =
-MALLOC.MANIFEST =
-RML.MANIFEST =
-OBJ = o
-DLL = so
-
-TEST_LAUNCHER=
-run_cmd ?= -sh $(tbb_root)/build/android.linux.launcher.sh $(largs)
diff --git a/src/tbb/build/android.windows.inc b/src/tbb/build/android.windows.inc
deleted file mode 100644
index c690966ff..000000000
--- a/src/tbb/build/android.windows.inc
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-####### Detections and Commands ###############################################
-
-# Must set def_prefix according to target architecture detected above
-ifeq (ia32,$(arch))
- def_prefix = lin32
-endif
-ifeq (arm,$(findstring arm,$(arch)))
- def_prefix = lin32
-endif
-ifeq (64,$(findstring 64,$(arch)))
- def_prefix = lin64
-endif
-
-ifdef ndk_version
- $(warning "NDK version $(ndk_version)")
-else
- $(warning "NDK version not set in environment, using \'unknown\' instead.")
- ndk_version:=unknown
-endif
-
-export runtime:=$(target)_NDK$(ndk_version)_version_$(target_os_version)
-
-AR = $(tbb_tool_prefix)ar
-MAKE_VERSIONS = cmd /C cscript /nologo /E:jscript $(subst \,/,$(tbb_root))/build/version_info_windows.js $(CONLY) $(arch) $(subst \,/,"$(VERSION_FLAGS)") > version_string.ver
-
-####### Build settings ########################################################
-
-# No SONAME_SUFFIX for Android allowed in library names
-TBB.LST = $(tbb_root)/src/tbb/$(def_prefix)-tbb-export.lst
-TBB.DEF = $(TBB.LST:.lst=.def)
-TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL)
-TBB.LIB = $(TBB.DLL)
-TBB_NO_VERSION.DLL=
-LINK_TBB.LIB = $(TBB.LIB)
-
-MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-tbbmalloc-export.def
-MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL)
-MALLOC.LIB = $(MALLOC.DLL)
-MALLOC_NO_VERSION.DLL=
-LINK_MALLOC.LIB = $(MALLOC.LIB)
-
-MALLOCPROXY.DEF = $(MALLOC_ROOT)/$(def_prefix)-proxy-export.def
-MALLOCPROXY.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL)
-MALLOCPROXY_NO_VERSION.DLL=
-MALLOCPROXY.LIB = $(MALLOCPROXY.DLL)
-
-TBB.RES =
-MALLOC.RES =
-RML.RES =
-TBB.MANIFEST =
-MALLOC.MANIFEST =
-RML.MANIFEST =
-OBJ = o
-DLL = so
-
-TEST_LAUNCHER=
-run_cmd ?= -sh $(tbb_root)/build/android.linux.launcher.sh $(largs)
-export UNIXMODE = 1
-# Clang for Android* uses the INCLUDE variable (instead of CPATH)
-export USE_INCLUDE_ENV = 1
diff --git a/src/tbb/build/big_iron.inc b/src/tbb/build/big_iron.inc
deleted file mode 100644
index dc8849f7c..000000000
--- a/src/tbb/build/big_iron.inc
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#------------------------------------------------------------------------------
-# Defines settings for building the TBB run-time as a static library.
-# Use these only on platforms where dynamic linking is impractical.
-#
-# IF YOU USE TBB AS A STATIC LIBRARY, YOU MUST GUARANTEE THAT ONLY ONE COPY OF
-# THE TBB RUN-TIME IS LINKED INTO AN APPLICATION! LINKING IN MULTIPLE COPIES
-# OF THE TBB RUN-TIME, DIRECTLY OR INDIRECTLY, MAY CAUSE PROGRAM FAILURE!
-#------------------------------------------------------------------------------
-
-# Note that ITT_NOTIFY allows to selectively remove the definition of
-# DO_ITT_NOTIFY without sabotaging deferred expansion of CPLUS_FLAGS.
-# TODO: currently only in linux.{gcc,xl}.inc
-
-# Note that -pthread with xl gives "1501-210 (W) command option t contains an incorrect subargument";
-# multithreading is instead achieved by using the _r affix in the compiler name.
-# TODO: is -lpthread still relevant/needed with XL and _r affix?
-
-# Note that usage of dynamic (shared) libraries is disabled
-# (via -D__TBB_DYNAMIC_LOAD_ENABLED=0 and LIBDL emptied) primarily for performance.
-
-# OS specific settings =>
- LIB_LINK_CMD = ar rcs
- LIB_LINK_FLAGS =
- LIB_LINK_LIBS =
- LIB_OUTPUT_KEY =
- DYLIB_KEY =
- ifeq ($(tbb_os),linux)
- ifeq ($(compiler),clang)
- LIBS = -pthread -lrt
- endif
- ifeq ($(compiler),gcc)
- LIBS = -pthread -lrt
- endif
- ifeq ($(compiler),xl)
- LIBS = -lpthread -lrt
- endif
- LINK_FLAGS =
- endif
- override CXXFLAGS += -D__TBB_DYNAMIC_LOAD_ENABLED=0 -D__TBB_SOURCE_DIRECTLY_INCLUDED=1
- ITT_NOTIFY =
- DLL = a
- LIBEXT = a
- LIBPREF = lib
- LIBDL =
-# <= OS specific settings
-
-TBB.DLL = $(LIBPREF)tbb$(DEBUG_SUFFIX).$(LIBEXT)
-LINK_TBB.LIB = $(TBB.DLL)
-TBB.LST =
-TBB.DEF =
-TBB_NO_VERSION.DLL =
-
-MALLOC.DLL = $(LIBPREF)tbbmalloc$(DEBUG_SUFFIX).$(LIBEXT)
-LINK_MALLOC.LIB = $(MALLOC.DLL)
-MALLOC.DEF =
-MALLOC_NO_VERSION.DLL =
-MALLOCPROXY.DLL =
-MALLOCPROXY.DEF =
diff --git a/src/tbb/build/build.py b/src/tbb/build/build.py
deleted file mode 100644
index 4c3c1fb43..000000000
--- a/src/tbb/build/build.py
+++ /dev/null
@@ -1,204 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (c) 2017-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Provides unified tool for preparing TBB for packaging
-
-from __future__ import print_function
-import os
-import re
-import sys
-import shutil
-import platform
-import argparse
-from glob import glob
-from collections import OrderedDict
-
-jp = os.path.join
-is_win = (platform.system() == 'Windows')
-is_lin = (platform.system() == 'Linux')
-is_mac = (platform.system() == 'Darwin')
-
-default_prefix = os.getenv('PREFIX', 'install_prefix')
-if is_win:
- default_prefix = jp(default_prefix, 'Library') # conda-specific by default on Windows
-
-parser = argparse.ArgumentParser()
-parser.add_argument('--tbbroot', default='.', help='Take Intel TBB from here')
-parser.add_argument('--prefix', default=default_prefix, help='Prefix')
-parser.add_argument('--prebuilt', default=[], action='append', help='Directories to find prebuilt files')
-parser.add_argument('--no-rebuild', default=False, action='store_true', help='do not rebuild')
-parser.add_argument('--install', default=False, action='store_true', help='install all')
-parser.add_argument('--install-libs', default=False, action='store_true', help='install libs')
-parser.add_argument('--install-devel', default=False, action='store_true', help='install devel')
-parser.add_argument('--install-docs', default=False, action='store_true', help='install docs')
-parser.add_argument('--install-python', default=False, action='store_true', help='install python module')
-parser.add_argument('--make-tool', default='make', help='Use different make command instead')
-parser.add_argument('--copy-tool', default=None, help='Use this command for copying ($ tool file dest-dir)')
-parser.add_argument('--build-args', default="", help='specify extra build args')
-parser.add_argument('--build-prefix', default='local', help='build dir prefix')
-parser.add_argument('--cmake-dir', help='directory to install CMake configuration files. Default: /lib/cmake/tbb')
-if is_win:
- parser.add_argument('--msbuild', default=False, action='store_true', help='Use msbuild')
- parser.add_argument('--vs', default="2012", help='select VS version for build')
- parser.add_argument('--vs-platform', default="x64", help='select VS platform for build')
-parser.add_argument('ignore', nargs='?', help="workaround conda-build issue #2512")
-
-args = parser.parse_args()
-
-if args.install:
- args.install_libs = True
- args.install_devel = True
- args.install_docs = True
- args.install_python= True
-
-def custom_cp(src, dst):
- assert os.system(' '.join([args.copy_tool, src, dst])) == 0
-
-if args.copy_tool:
- install_cp = custom_cp # e.g. to use install -p -D -m 755 on Linux
-else:
- install_cp = shutil.copy
-
-bin_dir = jp(args.prefix, "bin")
-lib_dir = jp(args.prefix, "lib")
-inc_dir = jp(args.prefix, 'include')
-doc_dir = jp(args.prefix, 'share', 'doc', 'tbb')
-cmake_dir = jp(args.prefix, "lib", "cmake", "tbb") if args.cmake_dir is None else args.cmake_dir
-
-if is_win:
- os.environ["OS"] = "Windows_NT" # make sure TBB will interpret it correctly
- libext = '.dll'
- libpref = ''
- dll_dir = bin_dir
-else:
- libext = '.dylib' if is_mac else '.so.2'
- libpref = 'lib'
- dll_dir = lib_dir
-
-tbb_names = ["tbb", "tbbmalloc", "tbbmalloc_proxy"]
-
-##############################################################
-
-def system(arg):
- print('$ ', arg)
- return os.system(arg)
-
-def run_make(arg):
- if system('%s -j %s'% (args.make_tool, arg)) != 0:
- print("\nBummer. Running serial build in order to recover the log and have a chance to fix the build")
- assert system('%s %s'% (args.make_tool, arg)) == 0
-
-os.chdir(args.tbbroot)
-if args.prebuilt:
- release_dirs = sum([glob(d) for d in args.prebuilt], [])
- print("Using pre-built files from ", release_dirs)
-else:
- if is_win and args.msbuild:
- preview_release_dir = release_dir = jp(args.tbbroot, 'build', 'vs'+args.vs, args.vs_platform, 'Release')
- if not args.no_rebuild or not os.path.isdir(release_dir):
- assert os.system('msbuild /m /p:Platform=%s /p:Configuration=Release %s build/vs%s/makefile.sln'% \
- (args.vs_platform, args.build_args, args.vs)) == 0
- preview_debug_dir = debug_dir = jp(args.tbbroot, 'build', 'vs'+args.vs, args.vs_platform, 'Debug')
- if not args.no_rebuild or not os.path.isdir(debug_dir):
- assert os.system('msbuild /m /p:Platform=%s /p:Configuration=Debug %s build/vs%s/makefile.sln'% \
- (args.vs_platform, args.build_args, args.vs)) == 0
- else:
- release_dir = jp(args.tbbroot, 'build', args.build_prefix+'_release')
- debug_dir = jp(args.tbbroot, 'build', args.build_prefix+'_debug')
- if not args.no_rebuild or not (os.path.isdir(release_dir) and os.path.isdir(debug_dir)):
- run_make('tbb_build_prefix=%s %s'% (args.build_prefix, args.build_args))
- preview_release_dir = jp(args.tbbroot, 'build', args.build_prefix+'_preview_release')
- preview_debug_dir = jp(args.tbbroot, 'build', args.build_prefix+'_preview_debug')
- if not args.no_rebuild or not (os.path.isdir(preview_release_dir) and os.path.isdir(preview_debug_dir)):
- run_make('tbb_build_prefix=%s_preview %s tbb_cpf=1 tbb'% (args.build_prefix, args.build_args))
- release_dirs = [release_dir, debug_dir, preview_release_dir, preview_debug_dir]
-
-filemap = OrderedDict()
-def append_files(names, dst, paths=release_dirs):
- global filemap
- files = sum([glob(jp(d, f)) for d in paths for f in names], [])
- filemap.update(dict(zip(files, [dst]*len(files))))
-
-
-if args.install_libs:
- append_files([libpref+f+libext for f in tbb_names], dll_dir)
-
-if args.install_devel:
- dll_files = [libpref+f+'_debug'+libext for f in tbb_names] # adding debug libraries
- if not is_win or not args.msbuild:
- dll_files += [libpref+"tbb_preview"+libext, libpref+"tbb_preview_debug"+libext]
- if is_win:
- dll_files += ['tbb*.pdb'] # copying debug info
- if is_lin:
- dll_files += ['libtbb*.so'] # copying linker scripts
- # symlinks .so -> .so.2 should not be created instead
- # since linking with -ltbb when using links can result in
- # incorrect dependence upon unversioned .so files
- append_files(dll_files, dll_dir)
- if is_win:
- append_files(['*.lib', '*.def'], lib_dir) # copying linker libs and defs
- for rootdir, dirnames, filenames in os.walk(jp(args.tbbroot,'include')):
- files = [f for f in filenames if not '.html' in f]
- append_files(files, jp(inc_dir, rootdir.split('include')[1][1:]), paths=(rootdir,))
-
- # Preparing CMake configuration files
- cmake_build_dir = jp(args.tbbroot, 'build', args.build_prefix+'_release', 'cmake_configs')
- assert system('cmake -DINSTALL_DIR=%s -DSYSTEM_NAME=%s -DTBB_VERSION_FILE=%s -DINC_REL_PATH=%s -DLIB_REL_PATH=%s -DBIN_REL_PATH=%s -P %s' % \
- (cmake_build_dir,
- platform.system(),
- jp(args.tbbroot, 'include', 'tbb', 'tbb_stddef.h'),
- os.path.relpath(inc_dir, cmake_dir),
- os.path.relpath(lib_dir, cmake_dir),
- os.path.relpath(bin_dir, cmake_dir),
- jp(args.tbbroot, 'cmake', 'tbb_config_installer.cmake'))) == 0
- append_files(['TBBConfig.cmake', 'TBBConfigVersion.cmake'], cmake_dir, paths=[cmake_build_dir])
-
-if args.install_python: # RML part
- irml_dir = jp(args.tbbroot, 'build', args.build_prefix+'_release')
- run_make('-C src tbb_build_prefix=%s %s python_rml'% (args.build_prefix, args.build_args))
- if is_lin:
- append_files(['libirml.so.1'], dll_dir, paths=[irml_dir])
-
-if args.install_docs:
- files = [
- 'CHANGES',
- 'LICENSE',
- 'README',
- 'README.md',
- 'Release_Notes.txt',
- ]
- append_files(files, doc_dir, paths=release_dirs+[jp(args.tbbroot, d) for d in ('.', 'doc')])
-
-for f in filemap.keys():
- assert os.path.exists(f)
- assert os.path.isfile(f)
-
-if filemap:
- print("Copying to prefix =", args.prefix)
-for f, dest in filemap.items():
- if not os.path.isdir(dest):
- os.makedirs(dest)
- print("+ %s to $prefix%s"%(f,dest.replace(args.prefix, '')))
- install_cp(f, dest)
-
-if args.install_python: # Python part
- paths = [os.path.abspath(d) for d in [args.prefix, inc_dir, irml_dir, lib_dir]+release_dirs]
- os.environ["TBBROOT"] = paths[0]
- # all the paths must be relative to python/ directory or be absolute
- assert system('python python/setup.py build -b%s build_ext -I%s -L%s install -f'% \
- (paths[2], paths[1], ':'.join(paths[2:]))) == 0
-
-print("done")
diff --git a/src/tbb/build/codecov.txt b/src/tbb/build/codecov.txt
deleted file mode 100644
index e22f8059a..000000000
--- a/src/tbb/build/codecov.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-src/tbb
-src/tbbmalloc
-include/tbb
-src/rml/server
-src/rml/client
-src/rml/include
-source/malloc
diff --git a/src/tbb/build/common.inc b/src/tbb/build/common.inc
deleted file mode 100644
index b95c78d6b..000000000
--- a/src/tbb/build/common.inc
+++ /dev/null
@@ -1,170 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ifndef tbb_os
-
- # Windows sets environment variable OS; for other systems, ask uname
- ifeq ($(OS),)
- OS:=$(shell uname)
- ifeq ($(OS),)
- $(error "Cannot detect operating system")
- endif
- export tbb_os=$(OS)
- endif
-
- ifeq ($(OS), Windows_NT)
- export tbb_os=windows
- endif
- ifeq ($(OS), Linux)
- export tbb_os=linux
- endif
- ifeq ($(OS), Darwin)
- export tbb_os=macos
- endif
-
-endif # !tbb_os
-
-ifeq (1,$(tbb_cpf))
- export CPF_SUFFIX ?=_preview
-endif
-
-ifeq (0,$(exceptions))
-# Inverse the value, for simplicity of use
- export no_exceptions=1
-endif
-
-ifdef cpp0x
- $(warning "Warning: deprecated cpp0x=$(cpp0x) is used, stdver must be used instead. Building in stdver=c++0x mode.")
- export stdver?=c++0x
- override cpp0x=
-endif
-
-# Define C & C++ compilers according to platform defaults or CXX & CC environment variables
-ifneq (,$(findstring environment, $(origin CXX)))
- CPLUS = $(CXX)
-endif
-ifneq (,$(findstring environment, $(origin CC)))
- CONLY = $(CC)
-endif
-
-ifneq (,$(stdver))
- ifeq (,$(findstring ++, $(stdver)))
- $(warning "Warning: unexpected stdver=$(stdver) is used.")
- endif
- CXX_STD_FLAGS=-std=$(stdver)
-endif
-
-# The requested option is added unconditionally.
-# If it is not supported, a compiler warning or error is expected.
-# Note that CXX_STD_FLAGS can be changed in ..inc.
-CXX_ONLY_FLAGS+=$(CXX_STD_FLAGS)
-
-ifeq (,$(wildcard $(tbb_root)/build/$(tbb_os).inc))
- $(error "$(tbb_os)" is not supported. Add build/$(tbb_os).inc file with os-specific settings )
-endif
-
-# detect arch and runtime versions, provide common host-specific definitions
-include $(tbb_root)/build/$(tbb_os).inc
-
-ifeq ($(arch),)
- $(error Architecture not detected)
-endif
-ifeq ($(runtime),)
- $(error Runtime version not detected)
-endif
-
-# process target-dependent compilation and testing configurations
-ifdef target
- # optionally process target-dependent options for compilation and testing
- ifneq (,$(wildcard $(tbb_root)/build/$(target).inc))
- include $(tbb_root)/build/$(target).inc
- endif
-
- # optionally process host-dependent environment for target-dependent compilation and testing
- ifneq (,$(wildcard $(tbb_root)/build/$(target).$(tbb_os).inc))
- include $(tbb_root)/build/$(target).$(tbb_os).inc
- endif
-
- # insure at least one target-dependent configuration file was found for compilation and testing
- ifeq (,$(wildcard $(tbb_root)/build/$(target).inc)$(wildcard $(tbb_root)/build/$(target).$(tbb_os).inc))
- $(error "$(target)" is not supported. Add build/$(target).inc or build/$(target).$(tbb_os).inc file)
- endif
-endif #target
-
-# Support for running debug tests to release library and vice versa
-flip_cfg=$(subst _flipcfg,_release,$(subst _release,_debug,$(subst _debug,_flipcfg,$(1))))
-cross_cfg = $(if $(crosstest),$(call flip_cfg,$(1)),$(1))
-# Setting default configuration to release
-cfg?=release
-
-compiler_name=$(notdir $(compiler))
-ifdef BUILDING_PHASE
- ifndef target
- target:=$(tbb_os)
- endif
- # process host/target compiler-dependent build configuration
- ifeq (,$(wildcard $(tbb_root)/build/$(target).$(compiler_name).inc))
- $(error "$(compiler_name)" is not supported on $(target). Add build/$(target).$(compiler_name).inc file with compiler-specific settings. )
- endif
- include $(tbb_root)/build/$(target).$(compiler_name).inc
-endif
-
-ifneq ($(BUILDING_PHASE),1)
- # definitions for top-level Makefiles
- origin_build_dir:=$(origin tbb_build_dir)
- tbb_build_dir?=$(tbb_root)$(SLASH)build
- export tbb_build_prefix?=$(tbb_os)_$(arch)_$(compiler_name)_$(runtime)$(CPF_SUFFIX)
- work_dir=$(tbb_build_dir)$(SLASH)$(tbb_build_prefix)
-endif # BUILDING_PHASE != 1
-
-ifdef offload
- extra_inc=$(offload).offload.inc
-endif
-ifdef extra_inc
- ifneq (,$(wildcard $(tbb_root)/build/$(extra_inc)))
- include $(tbb_root)/build/$(extra_inc)
- else
- $(error specified build file: "build/$(extra_inc)" is not found. )
- endif
-endif
-
-ifndef BUILDING_PHASE
- work_dir:=$(work_dir)
- # assign new value for tbb_root if path is not absolute (the filter keeps only /* paths)
- ifeq ($(filter /% $(SLASH)%, $(subst :, ,$(tbb_root)) ),)
- full_tbb_root:=$(CURDIR)/$(tbb_root)
- ifeq ($(origin_build_dir),undefined)
- #relative path are needed here as a workaround to support whitespaces in path
- override tbb_root:=../..
- else
- override tbb_root:=$(full_tbb_root)
- endif
- export tbb_root
- endif
- endif # !BUILDING_PHASE
-
-.DELETE_ON_ERROR: # Make will delete target if error occurred when building it.
-
-# MAKEOVERRIDES contains the command line variable definitions. Resetting it to
-# empty allows propagating all exported overridden variables to nested makes.
-# NOTEs:
-# 1. All variable set in command line are propagated to nested makes.
-# 2. All variables declared with the "export" keyword are propagated to
-# nested makes.
-# 3. "override" allows changing variables set in command line. But it doesn't
-# propagate new values to nested makes. For propagation, the "export" keyword
-# should be used.
-# 4. gmake v3.80 doesn't support exporting of target-specific variables using
-# the "export" keyword
-MAKEOVERRIDES =
diff --git a/src/tbb/build/common_rules.inc b/src/tbb/build/common_rules.inc
deleted file mode 100644
index 096a40758..000000000
--- a/src/tbb/build/common_rules.inc
+++ /dev/null
@@ -1,171 +0,0 @@
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-ifeq ($(tbb_strict),1)
- ifeq ($(WARNING_AS_ERROR_KEY),)
- $(error WARNING_AS_ERROR_KEY is empty)
- endif
- # Do not remove line below!
- WARNING_KEY += $(WARNING_AS_ERROR_KEY)
-endif
-
-ifneq (,$(findstring s,$(MAKEFLAGS)))
- override largs+=-q
-endif
-ifneq (,$(repeat))
- override largs+=-r $(repeat)
-endif
-ifneq (,$(largs)$(run_prefix))
- override run_cmd:=$(run_cmd) $(TEST_LAUNCHER)
- TEST_LAUNCHER=
- ifeq (,$(strip $(run_cmd)))
- $(warning Test launcher is not defined for the platform, ignoring launcher arguments)
- endif
-endif
-
-ifndef TEST_EXT
- TEST_EXT = exe
-endif
-
-INCLUDES += $(INCLUDE_KEY)$(tbb_root)/src $(INCLUDE_KEY)$(tbb_root)/src/rml/include $(INCLUDE_KEY)$(tbb_root)/include
-
-CPLUS_FLAGS += $(WARNING_KEY) $(CXXFLAGS)
-ifeq (1,$(tbb_cpf))
-CPLUS_FLAGS += $(DEFINE_KEY)__TBB_CPF_BUILD=1
-endif
-ifeq (0,$(exceptions))
-CPLUS_FLAGS += $(DEFINE_KEY)TBB_USE_EXCEPTIONS=0
-endif
-LINK_FLAGS += $(LDFLAGS)
-LIB_LINK_FLAGS += $(LDFLAGS)
-
-LIB_LINK_CMD ?= $(CPLUS) $(PIC_KEY)
-ifeq ($(origin LIB_OUTPUT_KEY), undefined)
- LIB_OUTPUT_KEY = $(OUTPUT_KEY)
-endif
-ifeq ($(origin LIB_LINK_LIBS), undefined)
- LIB_LINK_LIBS = $(LIBDL) $(LIBS)
-endif
-
-# some platforms do not provide separate C-only compiler
-CONLY ?= $(CPLUS)
-
-# The most generic rules
-#$(1) - is the target pattern
-define make-cxx-obj
-$1: %.cpp
- $$(CPLUS) $$(OUTPUTOBJ_KEY)$$@ $$(COMPILE_ONLY) $$(CPLUS_FLAGS) $$(CXX_ONLY_FLAGS) $$(CXX_WARN_SUPPRESS) $$(INCLUDES) $$<
-endef
-
-TEST_AFFIXES_OBJS=$(addsuffix .$(OBJ),$(addprefix %_,$(TEST_SUFFIXES)) $(addsuffix _%,$(TEST_PREFIXES)))
-
-# Make will not process the same recipe for each test pattern (since the dependency on the same %.cpp)
-# thus the separated recipes should be provided
-$(foreach t,%.$(OBJ) $(TEST_AFFIXES_OBJS),$(eval $(call make-cxx-obj,$(t))))
-
-.PRECIOUS: %.$(OBJ) %.$(TEST_EXT) %.res $(TEST_AFFIXES_OBJS)
-
-# Rules for generating a test DLL
-%_dll.$(OBJ): %.cpp
- $(CPLUS) $(COMPILE_ONLY) $(OUTPUTOBJ_KEY)$@ $(CPLUS_FLAGS) $(PIC_KEY) $(DEFINE_KEY)_USRDLL $(INCLUDES) $<
-
-#$(1) - is the binary name
-#$(2) - is the input obj files and libraries
-define make-test-binary
- $(CPLUS) $(OUTPUT_KEY)$(strip $1) $(CPLUS_FLAGS) $(2) $(LIBS) $(LINK_FLAGS)
-endef
-
-# LINK_FILES the list of options to link test specific files (libraries and object files)
-LINK_FILES+=$(TEST_LIBS)
-# Rule for generating executable test
-%.$(TEST_EXT): %.$(OBJ) $(TEST_LIBS) $(TEST_PREREQUISITE) $(if $(use_proxy),$(PROXY.LIB))
- $(call make-test-binary,$@,$< $(LINK_FILES) $(PIE_FLAG))
-
-# Rules for generating a test DLL
-%_dll.$(DLL): LINK_FLAGS += $(PIC_KEY) $(DYLIB_KEY)
-%_dll.$(DLL): TEST_LIBS := $(subst %_dll.$(DLL),,$(TEST_LIBS))
-%_dll.$(DLL): %_dll.$(OBJ)
- $(call make-test-binary,$@,$< $(subst %_dll.$(DLL),,$(LINK_FILES)))
-.PRECIOUS: %_dll.$(OBJ) %_dll.$(DLL)
-
-%.$(OBJ): %.c
- $(CONLY) $(COMPILE_ONLY) $(OUTPUTOBJ_KEY)$@ $(C_FLAGS) $(INCLUDES) $<
-
-%.$(OBJ): %.asm
- $(ASM) $(ASM_FLAGS) $<
-
-%.$(OBJ): %.s
- cpp <$< | grep -v '^#' >$*.tmp
- $(ASM) $(ASM_FLAGS) -o $@ $*.tmp
-
-ifdef rtools
-# Line 70 doesn't work with rtool's version of make. The symptom being that the asm rule kicks off instead, and these rules are cl only
-%.$(OBJ): %.cpp
- $(CPLUS) $(OUTPUTOBJ_KEY)$@ $(COMPILE_ONLY) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $<
-endif
-
-# Rule for generating .E file if needed for visual inspection
-# Note that ICL treats an argument after PREPROC_ONLY as a file to open,
-# so all uses of PREPROC_ONLY should be immediately followed by a file name
-%.E: %.cpp
- $(CPLUS) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDES) $(PREPROC_ONLY) $< >$@
-
-# TODO Rule for generating .asm file if needed for visual inspection
-%.asm: %.cpp
- $(CPLUS) /c /FAs /Fa $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDES) $<
-
-# TODO Rule for generating .s file if needed for visual inspection
-%.s: %.cpp
- $(CPLUS) -S $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDES) $<
-
-# Customizations
-$(KNOWN_WARNINGS): %.$(OBJ): %.cpp
- $(CPLUS) $(COMPILE_ONLY) $(subst $(WARNING_KEY),,$(CPLUS_FLAGS)) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $<
-
-tbb_misc.$(OBJ): version_string.ver
-tbb_misc.$(OBJ): INCLUDES+=$(INCLUDE_KEY).
-
-tbb_misc.E: tbb_misc.cpp version_string.ver
- $(CPLUS) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDE_KEY). $(INCLUDES) $(PREPROC_ONLY) $< >$@
-
-%.res: %.rc version_string.ver $(TBB.MANIFEST)
- rc /Fo$@ $(INCLUDES) $(filter /D%,$(CPLUS_FLAGS)) $<
-
-# TODO: add $(LIB_LINK_LIBS) $(LIB_LINK_FLAGS) (in a separate line?) and remove useless $(INCLUDES)
-VERSION_FLAGS=$(CPLUS) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDES)
-
-ifneq (,$(TBB.MANIFEST))
-$(TBB.MANIFEST):
- cmd /C "echo #include ^ >tbbmanifest.c"
- cmd /C "echo int main(){return 0;} >>tbbmanifest.c"
- cl /nologo $(C_FLAGS) tbbmanifest.c
-
-version_string.ver: $(TBB.MANIFEST)
- $(MAKE_VERSIONS)
- cmd /C "echo #define TBB_MANIFEST 1 >> version_string.ver"
-# TODO: fix parallel build by writing to a temporary file and rename it when complete
-else
-# TODO: make version strings directly representative for all the libraries
-version_string.ver:
- $(MAKE_VERSIONS)
-endif
-
-test_% debug_%: test_%.$(TEST_EXT) $(TEST_PREREQUISITE)
- $(run_cmd) ./$< $(args)
-ifneq (,$(codecov))
- profmerge
- codecov $(if $(findstring -,$(codecov)),$(codecov),) -demang -comp $(tbb_root)/build/codecov.txt
-endif
-
diff --git a/src/tbb/build/detect.js b/src/tbb/build/detect.js
deleted file mode 100644
index ccbe98634..000000000
--- a/src/tbb/build/detect.js
+++ /dev/null
@@ -1,195 +0,0 @@
-// Copyright (c) 2005-2019 Intel Corporation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-function readAllFromFile(fname) {
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- var file = null;
- try {
- file = fso.OpenTextFile(fname, 1, 0);
- return (file.readAll());
- } finally {
- // Close the file in the finally section to guarantee that it will be closed in any case
- // (if the exception is thrown or not).
- file.Close();
- }
-}
-
-function doWork() {
- var WshShell = WScript.CreateObject("WScript.Shell");
-
- var tmpExec = WshShell.Run("cmd /c echo int main(){return 0;} >detect.c", 0, true);
-
- // The next block deals with GCC (MinGW)
- if (WScript.Arguments.Count() > 1) {
- var compilerPath = WScript.Arguments(1);
- // The RegExp matches everything up to and including the last slash (it uses a greedy approach.)
- var compilerName = compilerPath.replace(/^.*[\/\\]/, "");
- if (compilerName.match(/gcc/i) != null) {
- if (WScript.Arguments(0) == "/arch") {
- // Get predefined macros
- tmpExec = WshShell.Run("cmd /C " + compilerPath + " -dM -E detect.c > detect.map", 0, true);
- var defs = readAllFromFile("detect.map");
- //detect target architecture
- var intel64 = /x86_64|amd64/mgi;
- var ia32 = /i386/mgi;
- if (defs.match(intel64)) {
- WScript.Echo("intel64");
- } else if (defs.match(ia32)) {
- WScript.Echo("ia32");
- } else {
- WScript.Echo("unknown");
- }
- } else {
- tmpExec = WshShell.Exec(compilerPath + " -dumpfullversion -dumpversion");
- var gccVersion = tmpExec.StdOut.ReadLine();
- if (WScript.Arguments(0) == "/runtime") {
- WScript.Echo("mingw" + gccVersion);
- }
- else if (WScript.Arguments(0) == "/minversion") {
- // Comparing strings, not numbers; will not work for two-digit versions
- if (gccVersion >= WScript.Arguments(2)) {
- WScript.Echo("ok");
- } else {
- WScript.Echo("fail");
- }
- }
- }
- return;
- }
- }
-
- //Compile binary
- tmpExec = WshShell.Exec("cl /MD detect.c /link /MAP");
- while (tmpExec.Status == 0) {
- WScript.Sleep(100);
- }
- //compiler banner that includes version and target arch was printed to stderr
- var clVersion = tmpExec.StdErr.ReadAll();
-
- if (WScript.Arguments(0) == "/arch") {
- //detect target architecture
- var intel64 = /AMD64|EM64T|x64/mgi;
- var ia32 = /[80|\s]x86/mgi;
- var arm = /ARM/mgi;
- if (clVersion.match(intel64)) {
- WScript.Echo("intel64");
- } else if (clVersion.match(ia32)) {
- WScript.Echo("ia32");
- } else if (clVersion.match(arm)) {
- WScript.Echo("armv7");
- } else {
- WScript.Echo("unknown");
- }
- return;
- }
-
- if (WScript.Arguments(0) == "/runtime") {
- //read map-file
- var mapContext = readAllFromFile("detect.map");
- //detect runtime
- var vc71 = /MSVCR71\.DLL/mgi;
- var vc80 = /MSVCR80\.DLL/mgi;
- var vc90 = /MSVCR90\.DLL/mgi;
- var vc100 = /MSVCR100\.DLL/mgi;
- var vc110 = /MSVCR110\.DLL/mgi;
- var vc120 = /MSVCR120\.DLL/mgi;
- var vc140 = /VCRUNTIME140\.DLL/mgi;
- var psdk = /MSVCRT\.DLL/mgi;
- if (mapContext.match(vc71)) {
- WScript.Echo("vc7.1");
- } else if (mapContext.match(vc80)) {
- WScript.Echo("vc8");
- } else if (mapContext.match(vc90)) {
- WScript.Echo("vc9");
- } else if (mapContext.match(vc100)) {
- WScript.Echo("vc10");
- } else if (mapContext.match(vc110)) {
- WScript.Echo("vc11");
- } else if (mapContext.match(vc120)) {
- WScript.Echo("vc12");
- } else if (mapContext.match(vc140)) {
- if (WshShell.ExpandEnvironmentStrings("%VisualStudioVersion%") == "15.0")
- WScript.Echo("vc14.1");
- else
- WScript.Echo("vc14");
- } else {
- WScript.Echo("unknown");
- }
- return;
- }
-
- if (WScript.Arguments(0) == "/minversion") {
- var compilerVersion;
- var compilerUpdate;
- if (WScript.Arguments(1) == "cl") {
- compilerVersion = clVersion.match(/Compiler Version ([0-9.]+)\s/mi)[1];
- // compilerVersion is in xx.xx.xxxxx.xx format, i.e. a string.
- // It will compare well with major.minor versions where major has two digits,
- // which is sufficient as the versions of interest start from 13 (for VC7).
- } else if (WScript.Arguments(1) == "icl") {
- // Get predefined ICL macros
- tmpExec = WshShell.Run("cmd /C icl /QdM /E detect.c > detect.map", 0, true);
- var defs = readAllFromFile("detect.map");
- // In #define __INTEL_COMPILER XXYY, XX is the major ICL version, YY is minor
- compilerVersion = defs.match(/__INTEL_COMPILER[ \t]*([0-9]+).*$/mi)[1] / 100;
- compilerUpdate = defs.match(/__INTEL_COMPILER_UPDATE[ \t]*([0-9]+).*$/mi)[1];
- // compiler version is a number; it compares well with another major.minor
- // version number, where major has one, two, and perhaps more digits (9.1, 11, etc).
- }
- var requestedVersion = WScript.Arguments(2);
- var requestedUpdate = 0;
- if (WScript.Arguments.Count() > 3)
- requestedUpdate = WScript.Arguments(3);
- if (compilerVersion < requestedVersion) {
- WScript.Echo("fail");
- } else if (compilerVersion == requestedVersion && compilerUpdate < requestedUpdate) {
- WScript.Echo("fail");
- } else {
- WScript.Echo("ok");
- }
- return;
- }
-}
-
-function doClean() {
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- // delete intermediate files
- if (fso.FileExists("detect.c"))
- fso.DeleteFile("detect.c", false);
- if (fso.FileExists("detect.obj"))
- fso.DeleteFile("detect.obj", false);
- if (fso.FileExists("detect.map"))
- fso.DeleteFile("detect.map", false);
- if (fso.FileExists("detect.exe"))
- fso.DeleteFile("detect.exe", false);
- if (fso.FileExists("detect.exe.manifest"))
- fso.DeleteFile("detect.exe.manifest", false);
-}
-
-if (WScript.Arguments.Count() > 0) {
-
- try {
- doWork();
- } catch (error) {
- WScript.Echo("unknown");
- }
- doClean();
-
-} else {
- WScript.Echo("Supported options:\n"
- + "\t/arch [compiler]\n"
- + "\t/runtime [compiler]\n"
- + "\t/minversion compiler version");
-}
-
diff --git a/src/tbb/build/generate_tbbvars.bat b/src/tbb/build/generate_tbbvars.bat
deleted file mode 100644
index 508f27480..000000000
--- a/src/tbb/build/generate_tbbvars.bat
+++ /dev/null
@@ -1,62 +0,0 @@
-@echo off
-REM
-REM Copyright (c) 2005-2019 Intel Corporation
-REM
-REM Licensed under the Apache License, Version 2.0 (the "License");
-REM you may not use this file except in compliance with the License.
-REM You may obtain a copy of the License at
-REM
-REM http://www.apache.org/licenses/LICENSE-2.0
-REM
-REM Unless required by applicable law or agreed to in writing, software
-REM distributed under the License is distributed on an "AS IS" BASIS,
-REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-REM See the License for the specific language governing permissions and
-REM limitations under the License.
-REM
-setlocal
-for %%D in ("%tbb_root%") do set actual_root=%%~fD
-set fslash_root=%actual_root:\=/%
-set bin_dir=%CD%
-set fslash_bin_dir=%bin_dir:\=/%
-set _INCLUDE=INCLUDE& set _LIB=LIB
-if not x%UNIXMODE%==x set _INCLUDE=CPATH& set _LIB=LIBRARY_PATH
-if not x%USE_INCLUDE_ENV%==x set _INCLUDE=INCLUDE
-
-echo Generating local tbbvars.bat
-echo @echo off>tbbvars.bat
-echo SET TBBROOT=%actual_root%>>tbbvars.bat
-echo SET TBB_ARCH_PLATFORM=%arch%\%runtime%>>tbbvars.bat
-echo SET TBB_TARGET_ARCH=%arch%>>tbbvars.bat
-echo SET %_INCLUDE%=%%TBBROOT%%\include;%%%_INCLUDE%%%>>tbbvars.bat
-echo SET %_LIB%=%bin_dir%;%%%_LIB%%%>>tbbvars.bat
-echo SET PATH=%bin_dir%;%%PATH%%>>tbbvars.bat
-if not x%UNIXMODE%==x echo SET LD_LIBRARY_PATH=%bin_dir%;%%LD_LIBRARY_PATH%%>>tbbvars.bat
-
-echo Generating local tbbvars.sh
-echo #!/bin/sh>tbbvars.sh
-echo export TBBROOT="%fslash_root%">>tbbvars.sh
-echo export TBB_ARCH_PLATFORM="%arch%\%runtime%">>tbbvars.sh
-echo export TBB_TARGET_ARCH="%arch%">>tbbvars.sh
-echo export %_INCLUDE%="${TBBROOT}/include;$%_INCLUDE%">>tbbvars.sh
-echo export %_LIB%="%fslash_bin_dir%;$%_LIB%">>tbbvars.sh
-echo export PATH="%fslash_bin_dir%;$PATH">>tbbvars.sh
-if not x%UNIXMODE%==x echo export LD_LIBRARY_PATH="%fslash_bin_dir%;$LD_LIBRARY_PATH">>tbbvars.sh
-
-echo Generating local tbbvars.csh
-echo #!/bin/csh>tbbvars.csh
-echo setenv TBBROOT "%actual_root%">>tbbvars.csh
-echo setenv TBB_ARCH_PLATFORM "%arch%\%runtime%">>tbbvars.csh
-echo setenv TBB_TARGET_ARCH "%arch%">>tbbvars.csh
-echo setenv %_INCLUDE% "${TBBROOT}\include;$%_INCLUDE%">>tbbvars.csh
-echo setenv %_LIB% "%bin_dir%;$%_LIB%">>tbbvars.csh
-echo setenv PATH "%bin_dir%;$PATH">>tbbvars.csh
-if not x%UNIXMODE%==x echo setenv LD_LIBRARY_PATH "%bin_dir%;$LD_LIBRARY_PATH">>tbbvars.csh
-
-if not x%LIB_STL_ANDROID%==x (
-REM Workaround for copying Android* specific stl shared library to work folder
-copy /Y "%LIB_STL_ANDROID:/=\%" .
-)
-
-endlocal
-exit
diff --git a/src/tbb/build/generate_tbbvars.sh b/src/tbb/build/generate_tbbvars.sh
deleted file mode 100644
index 49189f22d..000000000
--- a/src/tbb/build/generate_tbbvars.sh
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2005-2019 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Script used to generate tbbvars.[c]sh scripts
-bin_dir="$PWD" #
-cd "$tbb_root" # keep this comments here
-tbb_root="$PWD" # to make it unsensible
-cd "$bin_dir" # to EOL encoding
-cat >./tbbvars.sh <./tbbvars.csh <
-
-
-Overview
-This directory contains the internal Makefile infrastructure for Intel® Threading Building Blocks (Intel® TBB).
-
-
-See below for how to build Intel TBB and how to port Intel TBB
-to a new platform, operating system or architecture.
-
-
-Files
-The files here are not intended to be used directly. See below for usage.
-
-- Makefile.tbb
-
- Main Makefile to build the Intel TBB library.
- Invoked via 'make tbb' from top-level Makefile.
-
- Makefile.tbbmalloc
-
- Main Makefile to build the Intel TBB scalable memory allocator library as well as its tests.
- Invoked via 'make tbbmalloc' from top-level Makefile.
-
- Makefile.test
-
- Main Makefile to build and run the tests for the Intel TBB library.
- Invoked via 'make test' from top-level Makefile.
-
- common.inc
-
- Main common included Makefile that includes OS-specific and compiler-specific Makefiles.
-
- <os>.inc
-
- OS-specific Makefile for a particular <os>.
-
- <os>.<compiler>.inc
-
- Compiler-specific Makefile for a particular <os> / <compiler> combination.
-
- *.sh
-
- Infrastructure utilities for Linux* OS, macOS*, and UNIX*-related operating systems.
-
- *.js, *.bat
-
- Infrastructure utilities for Windows* OS.
-
-
-To Build
-
-To port Intel TBB to a new platform, operating system or architecture, see the porting directions below.
-
-
-Software prerequisites:
-
-- C++ compiler for the platform, operating system and architecture of interest.
- Either the native compiler for your system, or, optionally, the appropriate Intel® C++ Compiler, may be used.
-
- GNU make utility. On Windows OS, if a UNIX* emulator is used to run GNU make,
- it should be able to run Windows OS utilities and commands. On Linux OS, macOS, etc.,
- shell commands issued by GNU make should execute in a Bourne or BASH compatible shell.
- In the following examples, replace make with the correct GNU make command for
- your system (for example, gmake). GNU make version 3.80 and more recent are supported.
-
-
-
-Intel TBB libraries can be built by performing the following steps.
-On systems that support only one ABI (e.g., 32-bit), these steps build the libraries for that ABI.
-On systems that support both 64-bit and 32-bit libraries, these steps build the 64-bit libraries
-(Linux OS, macOS, and related systems) or whichever ABI is selected in the development environment (Windows OS).
-
-
-- Change to the top-level directory of the installed software.
-
- If using the Intel® C++ Compiler, make sure the appropriate compiler is available in your PATH
- (e.g., by sourcing the appropriate iccvars script for the compiler to be used).
-
- Invoke GNU make using no arguments, for example, make.
-
-
-
-To build Intel TBB libraries for other than the default ABI (e.g., to build 32-bit libraries on Linux OS, macOS,
-or related systems that support both 64-bit and 32-bit libraries), perform the following steps:
-
-
-- Change to the top-level directory of the installed software.
-
- If using the Intel® C++ Compiler, make sure the appropriate compiler is available in your PATH
- (e.g., by sourcing the appropriate iccvars script for the compiler to be used).
-
- Explicitly specify the architecture when invoking GNU make, e.g. make arch=ia32.
-
-
-The default make target will build the release and debug versions of the Intel TBB library.
-Other targets are available in the top-level Makefile. You might find the following targets useful:
-
-- make test will build and run Intel TBB unit-tests;
-
- make examples will build and run Intel TBB examples. Available in the open-source version only.
-For the commercial version, you can download Intel TBB Samples at the Intel® Software Product Samples and Tutorials website;
-
- make all will do all of the above. Available in the open-source version only.
-
-See also the list of other targets below.
-
-
-
-By default, the libraries will be built in sub-directories within the build/ directory.
-The sub-directories are named according to the operating system, architecture, compiler and software environment used
-(the sub-directory names also distinguish release vs. debug libraries). On Linux OS, the software environment comprises
-the GCC, libc and kernel version used. On macOS, the software environment comprises the GCC and OS version used.
-On Windows OS, the software environment comprises the Microsoft* Visual Studio* version used.
-See below for how to change the default build directory.
-
-
-
-To perform different build and/or test operations, use the following steps.
-
-
-- Change to the top-level directory of the installed software.
-
- If using the Intel® C++ Compiler, make sure the appropriate compiler is available in your PATH
- (e.g., by sourcing the appropriate iccvars script for the compiler to be used).
-
- Invoke GNU make by using one or more of the following commands.
-
- - make
-
- Default build. Equivalent to make tbb tbbmalloc.
-
- make all
-
- Equivalent to make tbb tbbmalloc test examples. Available in the open-source version only.
-
- cd src;make release
-
- Build and test release libraries only.
-
- cd src;make debug
-
- Build and test debug libraries only.
-
- make tbb
-
- Make Intel TBB release and debug libraries.
-
- make tbbmalloc
-
- Make Intel TBB scalable memory allocator libraries.
-
- make test
-
- Compile and run unit-tests
-
- make examples
-
- Build libraries and run all examples, like doing make debug clean release from the general example Makefile.
- Available in the open-source version only.
-
- make python
-
- Build, install, and test Python* API for Intel TBB. See details here.
-
- make compiler={icl, icc, gcc, clang} [(above options or targets)]
-
- Build and run as above, but use specified compilers instead of default, native compilers
-
- - {icl, icc} - to use Intel® compilers (icl on Windows OS, icc on Linux OS or macOS).
- - gcc - to use g++ (e.g. MinGW on Windows OS)
- - clang - to use Clang compiler
-
- - make compiler=clang stdlib=libc++ [(above options or targets)]
-
- Build and run as above, but use libc++ as a standard c++ library for clang.
-
- make stdver={c++11, c++14, ...} [(above options or targets)]
-
- Build and run as above, but additionally specify the version of the C++ standard or dialect to be used by
- the compiler. The specified value of stdver will be used as a parameter to the appropriate
- compiler option (such as -std); the behavior in case of unsupported value is compiler-specific.
-
- make target_app={win8ui, uwp, uwd} [target_mode=store] [(above options or targets)]
-
- Build and run as above, but use API that is compliant with Universal Windows* applications. Use win8ui option, if you want to use Intel TBB in Windows* 8 Universal application, uwp in case of Windows* 10 Universal Windows application and uwd for the usage inside Universal Windows* driver.
- target_mode=store is used to produce binaries that are compliant with Windows Store* application container. In later case they won't work with Intel TBB unit tests but work only with Windows Store* applications.
-
- ndk-build target=android [(above options or targets)]
-
- Build and run as above, but build libraries for Android* OS by Android NDK that should be installed. Makefiles were tested with revision 8.
-
- make arch={ia32, intel64, ia64} [(above options or targets)]
-
- Build and run as above, but build libraries for the selected ABI.
- Might be useful for cross-compilation; ensure proper environment is set before running this command.
-
- make tbb_root={(Intel TBB directory)} [(above options or targets)]
-
- Build and run as above; for use when invoking make from a directory other than the top-level directory.
-
- make tbb_build_dir={(build directory)} [(above options or targets)]
-
- Build and run as above, but place the built libraries in the specified directory, rather than in the default sub-directory within the build/ directory. This command might have troubles with the build in case the sources installed to the directory with spaces in the path.
-
- make tbb_build_prefix={(build sub-directory)} [(above options or targets)]
-
- Build and run as above, but place the built libraries in the specified sub-directory within the build/ directory, rather than using the default sub-directory name.
-
- make tbb_cpf=1 [(above options or targets)]
-
- Build and run as above, but build and use libraries with the Community Preview Features enabled, rather than the default libraries.
-
- make [(above options)] clean
-
- Remove any executables or intermediate files produced by the above commands.
- Includes build directories, object files, libraries and test executables.
-
-
-
-To Port
-
-This section provides information on how to port Intel TBB to a new platform, operating system or architecture.
-A subset or a superset of these steps may be required for porting to a given platform.
-
-
-To port the Intel TBB source code:
-
-- If porting to a new architecture, create a file that describes the architecture-specific details for that architecture.
-
- - Create a <os>_<architecture>.h file in the include/tbb/machine directory
- that describes these details.
-
- - The <os>_<architecture>.h is named after the operating system and architecture as recognized by
- include/tbb/tbb_machine.h and the Makefile infrastructure.
-
- This file defines the implementations of synchronization operations, and also the
- scheduler yield function, for the operating system and architecture.
-
- Several examples of <os>_<architecture>.h files can be found in the
- include/tbb/machine directory.
-
- - A minimal implementation defines the 4-byte and 8-byte compare-and-swap operations,
- and the scheduler yield function. See include/tbb/machine/mac_ppc.h
- for an example of a minimal implementation.
-
- More complex implementation examples can also be found in the
- include/tbb/machine directory
- that implement all the individual variants of synchronization operations that Intel TBB uses.
- Such implementations are more verbose but may achieve better performance on a given architecture.
-
- In a given implementation, any synchronization operation that is not defined is implemented, by default,
- in terms of 4-byte or 8-byte compare-and-swap. More operations can thus be added incrementally to increase
- the performance of an implementation.
-
- In most cases, synchronization operations are implemented as inline assembly code; examples also exist,
- (e.g., for Intel® Itanium® processors) that use out-of-line assembly code in *.s or *.asm files
- (see the assembly code sub-directories in the src/tbb directory).
-
-
- - Modify include/tbb/tbb_machine.h, if needed, to invoke the appropriate
- <os>_<architecture>.h file in the include/tbb/machine directory.
-
- - Add an implementation of DetectNumberOfWorkers() in src/tbb/tbb_misc.h,
- that returns the number of cores found on the system in case it is not supported by the current implementation.
- This is used to determine the default number of threads for the Intel TBB task scheduler.
-
- Either properly define FillDynamicLinks for use in
- src/tbb/cache_aligned_allocator.cpp,
- or hardcode the allocator to be used.
-
- Additional types might be required in the union defined in
- include/tbb/aligned_space.h
- to ensure proper alignment on your platform.
-
- Changes may be required in include/tbb/tick_count.h
- for systems that do not provide gettimeofday.
-
-
-To port the Makefile infrastructure:
-Modify the appropriate files in the Makefile infrastructure to add a new platform, operating system or architecture as needed.
-See the Makefile infrastructure files for examples.
-
-- The top-level Makefile includes common.inc to determine the operating system.
-
- - To add a new operating system, add the appropriate test to common.inc, and create the needed <os>.inc and <os>.<compiler>.inc files (see below).
-
- - The <os>.inc file makes OS-specific settings for a particular operating systems.
-
- - For example, linux.inc makes settings specific to Linux operating systems.
-
- This file performs OS-dependent tests to determine the specific platform and/or architecture, and sets other platform-dependent values.
-
- Add a new <os>.inc file for each new operating system added.
-
- - The <os>.<compiler>.inc file makes compiler-specific settings for a particular
- <os> / <compiler> combination.
-
- - For example, linux.gcc.inc makes specific settings for using GCC on Linux OS, and linux.icc.inc makes specific settings for using the Intel® C++ compiler on Linux OS.
-
- This file sets particular compiler, assembler and linker options required when using a particular <os> / <compiler> combination.
-
- Add a new <os>.<compiler>.inc file for each new <os> / <compiler> combination added.
-
-
-
-
-Up to parent directory
-
-Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
-
-Intel, the Intel logo and Itanium are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries.
-
-* Other names and brands may be claimed as the property of others.
-
-