require '_h2ph_pre.ph';

no warnings qw(redefine misc);

unless(defined(&_PSTL_PARALLEL_BACKEND_TBB_H)) {
    eval 'sub _PSTL_PARALLEL_BACKEND_TBB_H () {1;}' unless defined(&_PSTL_PARALLEL_BACKEND_TBB_H);
    require 'algorithm';
    require 'type_traits';
    require './g++/pstl/parallel_backend_utils.ph';
    require 'tbb/blocked_range.ph';
    require 'tbb/parallel_for.ph';
    require 'tbb/parallel_reduce.ph';
    require 'tbb/parallel_scan.ph';
    require 'tbb/parallel_invoke.ph';
    require 'tbb/task_arena.ph';
    require 'tbb/tbb_allocator.ph';
    if((defined(&TBB_INTERFACE_VERSION) ? &TBB_INTERFACE_VERSION : undef) < 10000) {
	die("Intel\(R\)\ Threading\ Building\ Blocks\ 2018\ is\ required\;\ older\ versions\ are\ not\ supported\.");
    }
    eval 'sub _PSTL_MERGE_CUT_OFF () {2000;}' unless defined(&_PSTL_MERGE_CUT_OFF);
    eval 'sub _PSTL_STABLE_SORT_CUT_OFF () {500;}' unless defined(&_PSTL_STABLE_SORT_CUT_OFF);
}
1;
