From 83f3896fc839379b85a2bf54665e14c91b7f08d0 Mon Sep 17 00:00:00 2001 From: aggieNick02 Date: Thu, 8 Apr 2021 14:01:25 -0500 Subject: 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 --- ports/tbb/CMakeLists.txt | 6 +++++- ports/tbb/CONTROL | 2 +- ports/tbb/portfile.cmake | 21 +++++++++++++++++---- versions/baseline.json | 2 +- versions/t-/tbb.json | 5 +++++ 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 "DynamicLibrary<\/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>" + "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,5 +1,10 @@ { "versions": [ + { + "git-tree": "4e6228578b0ca40358f584aa1ea8b4a9ac2d4ed9", + "version-string": "2020_U3", + "port-version": 4 + }, { "git-tree": "eb2f60732524f07ea5effc9aeda3472fd0bbe243", "version-string": "2020_U3", -- cgit v1.2.3