# Copyright (c) 2021-2025 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. # DISCLAIMER: Bazel support is community-based. The maintainers do not # use Bazel internally. The Bazel build can have security risks or # optimization gaps. load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("@rules_license//rules:license.bzl", "license") package( default_applicable_licenses = [":license"], ) exports_files([ "LICENSE", ]) license( name = "license", license_kinds = ["@rules_license//licenses/spdx:Apache-2.0"], license_text = "LICENSE.txt", ) config_setting( name = "macos_x86_64", constraint_values = [ "@platforms//os:osx", "@platforms//cpu:x86_64", ], ) config_setting( name = "macos_arm64", constraint_values = [ "@platforms//os:osx", "@platforms//cpu:arm64", ], ) cc_library( name = "tbb", srcs = [ "src/tbb/address_waiter.cpp", "src/tbb/allocator.cpp", "src/tbb/arena.cpp", "src/tbb/arena_slot.cpp", "src/tbb/concurrent_bounded_queue.cpp", "src/tbb/dynamic_link.cpp", "src/tbb/exception.cpp", "src/tbb/global_control.cpp", "src/tbb/governor.cpp", "src/tbb/itt_notify.cpp", "src/tbb/main.cpp", "src/tbb/market.cpp", "src/tbb/misc.cpp", "src/tbb/misc_ex.cpp", "src/tbb/observer_proxy.cpp", "src/tbb/parallel_pipeline.cpp", "src/tbb/private_server.cpp", "src/tbb/profiling.cpp", "src/tbb/queuing_rw_mutex.cpp", "src/tbb/rml_tbb.cpp", "src/tbb/rtm_mutex.cpp", "src/tbb/rtm_rw_mutex.cpp", "src/tbb/semaphore.cpp", "src/tbb/small_object_pool.cpp", "src/tbb/task.cpp", "src/tbb/task_dispatcher.cpp", "src/tbb/task_group_context.cpp", "src/tbb/tcm_adaptor.cpp", "src/tbb/thread_dispatcher.cpp", "src/tbb/thread_request_serializer.cpp", "src/tbb/threading_control.cpp", "src/tbb/version.cpp", ] + glob(["src/tbb/*.h"]), hdrs = glob([ "include/tbb/*.h", "include/oneapi/*.h", "include/oneapi/tbb/*.h", "include/oneapi/tbb/detail/*.h", ]), copts = select({ "@platforms//cpu:x86_64": ["-mwaitpkg"], "//conditions:default": [], }), defines = [ "__TBB_DYNAMIC_LOAD_ENABLED=0", "__TBB_SOURCE_DIRECTLY_INCLUDED=1", "__TBB_SKIP_DEPENDENCY_SIGNATURE_VERIFICATION=1", "__TBB_BUILD", #"__TBB_USE_ITT_NOTIFY", ] + select({ "@platforms//os:osx": ["_XOPEN_SOURCE"], "//conditions:default": [], }), includes = [ "include", ], visibility = ["//visibility:public"], ) cc_library( name = "tbbmalloc", srcs = glob([ "src/tbbmalloc/*.h", "src/tbb/*.h", "src/tbbmalloc_proxy/*.h", ]) + [ "src/tbbmalloc/backend.cpp", "src/tbbmalloc/backref.cpp", "src/tbbmalloc/frontend.cpp", "src/tbbmalloc/large_objects.cpp", "src/tbbmalloc/tbbmalloc.cpp", ], hdrs = glob([ "include/tbb/*.h", "include/oneapi/tbb/detail/*.h", "include/oneapi/tbb/*.h", ]), includes = [ "include", ], local_defines = [ "__TBBMALLOC_BUILD", ], visibility = ["//visibility:public"], ) cc_library( name = "tbbmalloc_proxy", srcs = [ "src/tbbmalloc_proxy/function_replacement.cpp", "src/tbbmalloc_proxy/proxy.cpp", ], visibility = ["//visibility:public"], deps = [ ":tbbmalloc", ], ) cc_test( name = "test_mutex", srcs = [ "test/tbb/test_mutex.cpp", "test/tbb/test_mutex.h", ] + glob([ "test/common/*.h", ]), includes = ["test"], deps = [ ":tbb", ], ) cc_test( name = "test_blocked_range", srcs = [ "test/tbb/test_blocked_range.cpp", ] + glob([ "test/common/*.h", ]), includes = ["test"], deps = [ ":tbb", ], ) cc_test( name = "test_parallel_for", srcs = [ "test/tbb/test_parallel_for.cpp", "test/tbb/test_partitioner.h", ] + glob([ "test/common/*.h", ]), includes = ["test"], deps = [ ":tbb", ], ) cc_test( name = "test_parallel_reduce", srcs = [ "test/tbb/test_parallel_reduce.cpp", ] + glob([ "test/common/*.h", ]), includes = ["test"], deps = [ ":tbb", ], ) cc_test( name = "test_parallel_for_each", srcs = [ "test/tbb/test_mutex.h", "test/tbb/test_parallel_for_each.cpp", ] + glob([ "test/common/*.h", ]), includes = [ "test", "test/tbb", ], deps = [ ":tbb", ], ) cc_test( name = "test_adaptive_mutex", srcs = [ "test/conformance/conformance_mutex.h", "test/tbb/test_adaptive_mutex.cpp", "test/tbb/test_mutex.h", ] + glob([ "test/common/*.h", ]), includes = [ "test", "test/tbb", ], deps = [ ":tbb", ], ) cc_test( name = "test_task", srcs = [ "test/tbb/test_task.cpp", ] + glob([ "test/common/*.h", ]), includes = ["test"], deps = [ ":tbb", ], ) #cc_test( # name = "conformance_parallel_sort", # srcs = [ # "test/conformance/conformance_parallel_sort.cpp", # ] + glob([ # "test/common/*.h", # ]), # includes = ["test"], # deps = [ # ":tbb", # ], #) cc_test( name = "conformance_task_group", srcs = [ "test/conformance/conformance_task_group.cpp", ] + glob([ "test/common/*.h", ]), includes = ["test"], deps = [ ":tbb", ], ) alias( name = "onetbb", actual = ":tbb", visibility = ["//visibility:public"], )