-
Notifications
You must be signed in to change notification settings - Fork 1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Committing oneTBB 2021.1-beta08 source code
- Loading branch information
Showing
1,220 changed files
with
96,662 additions
and
289,306 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,88 +1,60 @@ | ||
# Ignore the debug and release directories created with Makefile builds # | ||
######################################################################### | ||
build/*_debug/ | ||
build/*_release/ | ||
# -------- C++ -------- | ||
# Prerequisites | ||
*.d | ||
|
||
# Compiled source # | ||
################### | ||
*.com | ||
*.class | ||
*.dll | ||
*.lib | ||
*.pdb | ||
*.exe | ||
# Compiled Object files | ||
*.slo | ||
*.lo | ||
*.o | ||
*.so | ||
*.so.1 | ||
*.so.2 | ||
*.dylib | ||
*.a | ||
*.obj | ||
*.pyc | ||
|
||
*.orig | ||
*.raw | ||
*.sample | ||
*.slo | ||
*.swp | ||
*.config | ||
*.la | ||
*.lai | ||
*.lo | ||
*.nhdr | ||
*.nii.gz | ||
*.nrrd | ||
# Precompiled Headers | ||
*.gch | ||
*.pch | ||
|
||
# Packages # | ||
############ | ||
# it's better to unpack these files and commit the raw source | ||
# git has its own built in compression methods | ||
*.7z | ||
*.dmg | ||
*.gz | ||
*.iso | ||
*.jar | ||
*.rar | ||
*.tar | ||
*.tgz | ||
*.zip | ||
# Compiled Dynamic libraries | ||
*.so | ||
*.so.* | ||
*.dylib | ||
*.dll | ||
|
||
# Logs and databases # | ||
###################### | ||
*.log | ||
*.sql | ||
*.sqlite | ||
# Fortran module files | ||
*.mod | ||
*.smod | ||
|
||
# OS generated files # | ||
###################### | ||
.DS_Store | ||
.DS_Store? | ||
._* | ||
.Spotlight-V100 | ||
.Trashes | ||
ehthumbs.db | ||
Thumbs.db | ||
# Compiled Static libraries | ||
*.lai | ||
*.la | ||
*.a | ||
*.lib | ||
|
||
# IDE generated files # | ||
###################### | ||
/.ninja_deps | ||
/.ninja_log | ||
/build.ninja | ||
/rules.ninja | ||
*~ | ||
.emacs.desktop | ||
.tags | ||
# Executables | ||
*.exe | ||
*.out | ||
*.app | ||
|
||
# Build system generated files # | ||
################################ | ||
# -------- CMake -------- | ||
CMakeCache.txt | ||
CMakeFiles/ | ||
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/* | ||
|
||
# -------- CTags -------- | ||
.tags | ||
.ctags | ||
|
||
# Other # | ||
######### | ||
.clang_complete | ||
.idea | ||
.svn | ||
crash* | ||
*.tmp | ||
/.vs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,242 @@ | ||
# Copyright (c) 2020 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.1) | ||
|
||
include(CheckCXXCompilerFlag) | ||
|
||
# Enable CMake policies | ||
|
||
if (POLICY CMP0091) | ||
# The NEW behavior for this policy is to not place MSVC runtime library flags in the default | ||
# CMAKE_<LANG>_FLAGS_<CONFIG> 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() | ||
|
||
# Until CMake 3.4.0 FindThreads.cmake requires C language enabled. | ||
# Enable C language before CXX to avoid possible override of CMAKE_SIZEOF_VOID_P. | ||
if (CMAKE_VERSION VERSION_LESS 3.4) | ||
enable_language(C) | ||
endif() | ||
|
||
file(READ include/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_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}") | ||
set(TBBMALLOC_BINARY_VERSION 2) | ||
|
||
project(TBB VERSION ${_tbb_ver_major}.${_tbb_ver_minor} LANGUAGES CXX) | ||
unset(_tbb_ver_major) | ||
unset(_tbb_ver_minor) | ||
|
||
# --------------------------------------------------------------------------------------------------------- | ||
# 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_NUMA_SUPPORT "Enable NUMA support that depends on Portable Hardware Locality (hwloc) library" OFF) | ||
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_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) | ||
|
||
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() | ||
|
||
# ------------------------------------------------------------------- | ||
# 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() | ||
|
||
# ------------------------------------------------------------------- | ||
|
||
# ------------------------------------------------------------------- | ||
# Common dependencies | ||
set(THREADS_PREFER_PTHREAD_FLAG TRUE) | ||
find_package(Threads REQUIRED) | ||
# ------------------------------------------------------------------- | ||
|
||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) | ||
|
||
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() | ||
|
||
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 OR 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() | ||
add_subdirectory(src/tbb) | ||
if (NOT "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "mips") | ||
add_subdirectory(src/tbbmalloc) | ||
add_subdirectory(src/tbbmalloc_proxy) | ||
if (TBB_NUMA_SUPPORT) | ||
add_subdirectory(src/tbbbind) | ||
endif() | ||
endif() | ||
|
||
# ------------------------------------------------------------------- | ||
# Installation instructions | ||
include(CMakePackageConfigHelpers) | ||
|
||
install(DIRECTORY include | ||
DESTINATION .) | ||
|
||
install(EXPORT ${CMAKE_PROJECT_NAME}Targets | ||
NAMESPACE TBB:: | ||
DESTINATION lib/cmake/${CMAKE_PROJECT_NAME}) | ||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake | ||
"include(\${CMAKE_CURRENT_LIST_DIR}/${CMAKE_PROJECT_NAME}Targets.cmake)\n") | ||
|
||
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake" | ||
COMPATIBILITY AnyNewerVersion) | ||
|
||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake" | ||
"${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake" | ||
DESTINATION lib/cmake/${CMAKE_PROJECT_NAME}) | ||
# ------------------------------------------------------------------- | ||
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") | ||
configure_file( | ||
"${ANDROID_NDK}/sources/cxx-stl/llvm-libc++/libs/${ANDROID_ABI}/libc++_shared.so" | ||
"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libc++_shared.so" | ||
COPYONLY) | ||
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) |
Oops, something went wrong.