aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraggieNick02 <nick@pcpartpicker.com>2021-04-08 14:01:25 -0500
committerGitHub <noreply@github.com>2021-04-08 12:01:25 -0700
commit83f3896fc839379b85a2bf54665e14c91b7f08d0 (patch)
tree1455e8fe995908fe3a48a0940743c23ce63c5cb8
parentd46fc1f4433c27c402313ae75292314e755e7af3 (diff)
downloadvcpkg-83f3896fc839379b85a2bf54665e14c91b7f08d0.tar.gz
vcpkg-83f3896fc839379b85a2bf54665e14c91b7f08d0.zip
Add disable-exceptions feature to portfile for tbb (#16068)
* Add disable-exceptions feature to portfile to pass exceptions=0 to tbb_build in the non-windows case, and set TBB_USE_EXCEPTIONS=0 in the vcxproj files in the windows case. This removes the try/catch(...) wrappers around user code run by TBB. While these exception facilities can be nice in some cases, their removal allows for much easier debugging of a crash due to an unhandled exception in code that a TBB client provides to a TBB algortihm. With the try/catch(...) wrappers removed, the unhandled exception and crash dump are generated at the point of the thrown exception, versus significantly later in a different thread with the originally throwing thread no longer having the stack from when the exception was thrown. * commit for changes from running x-add-version tbb to update for new port version * Remove feature and undo changes made by x-add-version * Rerun x-add-version
-rw-r--r--ports/tbb/CMakeLists.txt6
-rw-r--r--ports/tbb/CONTROL2
-rw-r--r--ports/tbb/portfile.cmake21
-rw-r--r--versions/baseline.json2
-rw-r--r--versions/t-/tbb.json5
5 files changed, 29 insertions, 7 deletions
diff --git a/ports/tbb/CMakeLists.txt b/ports/tbb/CMakeLists.txt
index ae53c40f2..a485d119d 100644
--- a/ports/tbb/CMakeLists.txt
+++ b/ports/tbb/CMakeLists.txt
@@ -1,9 +1,13 @@
project(tbb CXX)
+option(DISABLE_EXCEPTIONS "Set exceptions=0 for make to turn off exception support in TBB" OFF)
file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*)
file(COPY ${SOURCES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/src)
include(${CMAKE_CURRENT_BINARY_DIR}/src/cmake/TBBBuild.cmake REQUIRED)
+if(DISABLE_EXCEPTIONS)
+ set(DISABLE_EXCEPTIONS_ARG exceptions=0)
+endif()
if(NOT BUILD_SHARED_LIBS)
set(TBB_STATIC_INCLUDE extra_inc=big_iron.inc)
endif()
@@ -26,7 +30,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
endif()
endif()
-tbb_build(TBB_ROOT ${CMAKE_CURRENT_BINARY_DIR}/src MAKE_ARGS ${arch} ${CPLUS} ${CONLY} ${TBB_STATIC_INCLUDE} ${FORWARD_SDK_ROOT})
+tbb_build(TBB_ROOT ${CMAKE_CURRENT_BINARY_DIR}/src MAKE_ARGS ${arch} ${CPLUS} ${CONLY} ${DISABLE_EXCEPTIONS_ARG} ${TBB_STATIC_INCLUDE} ${FORWARD_SDK_ROOT})
set(SUBDIR ${CMAKE_CURRENT_BINARY_DIR}/tbb_cmake_build/tbb_cmake_build_subdir)
if(CMAKE_BUILD_TYPE STREQUAL "Release")
diff --git a/ports/tbb/CONTROL b/ports/tbb/CONTROL
index 611e074b7..ea2bdc140 100644
--- a/ports/tbb/CONTROL
+++ b/ports/tbb/CONTROL
@@ -1,6 +1,6 @@
Source: tbb
Version: 2020_U3
-Port-Version: 3
+Port-Version: 4
Homepage: https://github.com/01org/tbb
Description: Intel's Threading Building Blocks.
Supports: !(uwp|arm|arm64) | linux | osx
diff --git a/ports/tbb/portfile.cmake b/ports/tbb/portfile.cmake
index 0bea15bf0..ada16a7d7 100644
--- a/ports/tbb/portfile.cmake
+++ b/ports/tbb/portfile.cmake
@@ -14,11 +14,22 @@ vcpkg_from_github(
)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+if (TBB_DISABLE_EXCEPTIONS)
+ message(STATUS "Building TBB with exception-handling constructs disabled because TBB_DISABLE_EXCEPTIONS is set to ON.")
+else()
+ message(STATUS "TBB uses exception-handling constructs by default (if supported by the compiler). This use can be disabled with 'SET(TBB_DISABLE_EXCEPTIONS ON)' in your custom triplet.")
+endif()
if (NOT VCPKG_TARGET_IS_WINDOWS)
+ if (TBB_DISABLE_EXCEPTIONS)
+ set(DISABLE_EXCEPTIONS ON)
+ else()
+ set(DISABLE_EXCEPTIONS OFF)
+ endif()
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
+ OPTIONS -DDISABLE_EXCEPTIONS=${DISABLE_EXCEPTIONS}
)
vcpkg_install_cmake()
@@ -52,19 +63,21 @@ else()
configure_file(${CONFIGURE_FILE_NAME} ${CONFIGURE_BAK_FILE_NAME} COPYONLY)
endif()
configure_file(${CONFIGURE_BAK_FILE_NAME} ${CONFIGURE_FILE_NAME} COPYONLY)
+ file(READ ${CONFIGURE_FILE_NAME} SLN_CONFIGURE)
if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
- file(READ ${CONFIGURE_FILE_NAME} SLN_CONFIGURE)
string(REPLACE "<ConfigurationType>DynamicLibrary<\/ConfigurationType>"
"<ConfigurationType>StaticLibrary<\/ConfigurationType>" SLN_CONFIGURE "${SLN_CONFIGURE}")
string(REPLACE "\/D_CRT_SECURE_NO_DEPRECATE"
"\/D_CRT_SECURE_NO_DEPRECATE \/DIN_CILK_STATIC" SLN_CONFIGURE "${SLN_CONFIGURE}")
- file(WRITE ${CONFIGURE_FILE_NAME} "${SLN_CONFIGURE}")
else()
- file(READ ${CONFIGURE_FILE_NAME} SLN_CONFIGURE)
string(REPLACE "\/D_CRT_SECURE_NO_DEPRECATE"
"\/D_CRT_SECURE_NO_DEPRECATE \/DIN_CILK_RUNTIME" SLN_CONFIGURE "${SLN_CONFIGURE}")
- file(WRITE ${CONFIGURE_FILE_NAME} "${SLN_CONFIGURE}")
endif()
+ if (TBB_DISABLE_EXCEPTIONS)
+ string(REPLACE "<PreprocessorDefinitions>%(PreprocessorDefinitions)<\/PreprocessorDefinitions>"
+ "<PreprocessorDefinitions>TBB_USE_EXCEPTIONS=0;%(PreprocessorDefinitions)<\/PreprocessorDefinitions>" SLN_CONFIGURE "${SLN_CONFIGURE}")
+ endif()
+ file(WRITE ${CONFIGURE_FILE_NAME} "${SLN_CONFIGURE}")
endmacro()
CONFIGURE_PROJ_FILE(${SOURCE_PATH}/build/vs2013/tbb.vcxproj)
diff --git a/versions/baseline.json b/versions/baseline.json
index 3c3d78d32..198aff1df 100644
--- a/versions/baseline.json
+++ b/versions/baseline.json
@@ -5870,7 +5870,7 @@
},
"tbb": {
"baseline": "2020_U3",
- "port-version": 3
+ "port-version": 4
},
"tcl": {
"baseline": "core-9-0-a1",
diff --git a/versions/t-/tbb.json b/versions/t-/tbb.json
index 366fa1e7e..2655af3fd 100644
--- a/versions/t-/tbb.json
+++ b/versions/t-/tbb.json
@@ -1,6 +1,11 @@
{
"versions": [
{
+ "git-tree": "4e6228578b0ca40358f584aa1ea8b4a9ac2d4ed9",
+ "version-string": "2020_U3",
+ "port-version": 4
+ },
+ {
"git-tree": "eb2f60732524f07ea5effc9aeda3472fd0bbe243",
"version-string": "2020_U3",
"port-version": 3