diff --git a/mingw-w64-intel-tbb/PKGBUILD b/mingw-w64-intel-tbb/PKGBUILD index 9140d89e12..18777f37f6 100644 --- a/mingw-w64-intel-tbb/PKGBUILD +++ b/mingw-w64-intel-tbb/PKGBUILD @@ -3,7 +3,7 @@ _realname=intel-tbb pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -pkgver=2021.5.0 +pkgver=2020.3 pkgrel=1 epoch=1 pkgdesc='High level abstract threading library (mingw-w64)' @@ -16,42 +16,76 @@ arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32') url='https://www.threadingbuildingblocks.org/' license=('Apache') -source=(${_realname}-${pkgver}.tar.gz::https://github.com/intel/tbb/archive/refs/tags/v${pkgver}.tar.gz +source=(${_realname}-${pkgver}.tar.gz::https://github.com/intel/tbb/archive/v${pkgver}.tar.gz "tbb-cmake-config.patch" - "mingw-strict-ansi-back.patch") -sha256sums=('e5b57537c741400cf6134b428fc1689a649d7d38d9bb9c1b6d64f092ea28178a' - '6530687a7f2f27f79fd519c11e57844f23c07a9cb11dddcf48897491bcecc98f' - '48321d6276e6e3bc81e2d4c5b5d6a27b2389dadef3b4c50de9582ab5d2029133') + "tbb-dont-set-crt-version-for-ucrt.patch" + "tbb-clang.patch") +sha256sums=('ebc4f6aa47972daed1f7bf71d100ae5bf6931c2e3144cf299c8cc7d041dca2f3' + 'f5aa6bb43a69a46a0cec4d2b3e84e7e6e102b3becd1b58d496e8ee035829dc85' + 'a24719087f206fccccb032e26e3c684d2281da6bfe24e7cd69681493c800ad3a' + '329c17c66fa11422b4402017943a8ca83c208c003fc5a769904b4149152300ab') prepare () { cd ${srcdir}/oneTBB-${pkgver} patch -p1 -i ${srcdir}/tbb-cmake-config.patch - patch -p1 -i ${srcdir}/mingw-strict-ansi-back.patch + patch -p1 -i ${srcdir}/tbb-dont-set-crt-version-for-ucrt.patch + + if [[ $MINGW_PACKAGE_PREFIX == *-clang-* ]]; then + patch -p1 -i ${srcdir}/tbb-clang.patch + fi } build() { - declare -a extra_config - if check_option "debug" "n"; then - extra_config+=("-DCMAKE_BUILD_TYPE=Release") + cd ${srcdir}/oneTBB-${pkgver} + + sed -i "s|OUTPUT_KEY = -o #|OUTPUT_KEY = -Wl,--out-implib,lib\$(BUILDING_LIBRARY).a -o #|g" build/windows.gcc.inc + echo "CPLUS_FLAGS += -mrtm" >> build/windows.gcc.inc # makes test cases pass + + if test "${MINGW_CHOST}" = "x86_64-w64-mingw32" + then + parch=intel64 else - extra_config+=("-DCMAKE_BUILD_TYPE=Debug") + parch=ia32 fi - - [[ -d "build-${MINGW_CHOST}" ]] && rm -rf "build-${MINGW_CHOST}" - mkdir -p build-${MINGW_CHOST} && cd build-${MINGW_CHOST} - + unset LDFLAGS + mingw32-make arch=${parch} tbb_os=windows runtime=mingw compiler=gcc stdver=c++11 + + mkdir build-cmake && cd build-cmake MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \ ${MINGW_PREFIX}/bin/cmake.exe \ -G"MSYS Makefiles" \ - ${extra_config} \ - -DTBB_TEST=OFF \ + -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \ - ../oneTBB-${pkgver} + -DINSTALL_DIR=${srcdir}/oneTBB-${pkgver}/build-cmake \ + -DSYSTEM_NAME=Windows \ + -DTBB_VERSION_FILE=${srcdir}/oneTBB-${pkgver}/include/tbb/tbb_stddef.h \ + -DINC_REL_PATH=../../../include \ + -DLIB_REL_PATH=../../../lib \ + -DBIN_REL_PATH=../../../bin \ + -P ${srcdir}/oneTBB-${pkgver}/cmake/tbb_config_installer.cmake } package() { - cd ${srcdir}/build-${MINGW_CHOST} - make DESTDIR=${pkgdir} install + cd ${srcdir}/oneTBB-${pkgver} + + if test "${MINGW_CHOST}" = "x86_64-w64-mingw32" + then + parch=intel64 + else + parch=ia32 + fi + + install -d "${pkgdir}${MINGW_PREFIX}"/include + cp -a include/tbb "${pkgdir}${MINGW_PREFIX}"/include + install -d "${pkgdir}${MINGW_PREFIX}"/bin + #install -m755 build/windows_${parch}_gcc_mingw_debug/*.dll "${pkgdir}${MINGW_PREFIX}"/bin + install -m755 build/windows_${parch}_gcc_mingw_release/*.dll "${pkgdir}${MINGW_PREFIX}"/bin + install -d "${pkgdir}${MINGW_PREFIX}"/lib + #install -m755 build/windows_${parch}_gcc_mingw_debug/*.a "${pkgdir}${MINGW_PREFIX}"/lib + install -m755 build/windows_${parch}_gcc_mingw_release/*.a "${pkgdir}${MINGW_PREFIX}"/lib - install -Dm644 ${srcdir}/oneTBB-${pkgver}/LICENSE.txt "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE" + # Install cmake files + install -d "${pkgdir}${MINGW_PREFIX}"/lib/cmake/tbb + install -m644 build-cmake/TBBConfig.cmake "${pkgdir}${MINGW_PREFIX}"/lib/cmake/tbb/ + install -m644 build-cmake/TBBConfigVersion.cmake "${pkgdir}${MINGW_PREFIX}"/lib/cmake/tbb/ } diff --git a/mingw-w64-intel-tbb/tbb-clang.patch b/mingw-w64-intel-tbb/tbb-clang.patch new file mode 100644 index 0000000000..4e45612263 --- /dev/null +++ b/mingw-w64-intel-tbb/tbb-clang.patch @@ -0,0 +1,27 @@ +diff --git a/build/windows.gcc.inc b/build/windows.gcc.inc +index eef1c1b8..ed82791e 100644 +--- a/build/windows.gcc.inc ++++ b/build/windows.gcc.inc +@@ -59,7 +59,7 @@ TEST_WARNING_KEY = -Wextra -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtu + WARNING_SUPPRESS = -Wno-parentheses -Wno-uninitialized -Wno-non-virtual-dtor + DYLIB_KEY = -shared + LIBDL = +-EXPORT_KEY = -Wl,--version-script, ++EXPORT_KEY = -Wl,--output-def= + LIBS = -lpsapi + BIGOBJ_KEY = -Wa,-mbig-obj + +@@ -77,13 +77,6 @@ ifeq (ok,$(call detect_js,/minversion gcc 4.8)) + RTM_KEY = -mrtm + endif + +-# gcc 6.0 and later have -flifetime-dse option that controls +-# elimination of stores done outside the object lifetime +-ifeq (ok,$(call detect_js,/minversion gcc 6.0)) +- # keep pre-contruction stores for zero initialization +- DSE_KEY = -flifetime-dse=1 +-endif +- + ifeq ($(cfg), release) + CPLUS_FLAGS = -g -O2 + endif diff --git a/mingw-w64-intel-tbb/tbb-cmake-config.patch b/mingw-w64-intel-tbb/tbb-cmake-config.patch index 67fdbac01d..0f263ef51d 100644 --- a/mingw-w64-intel-tbb/tbb-cmake-config.patch +++ b/mingw-w64-intel-tbb/tbb-cmake-config.patch @@ -1,25 +1,35 @@ ---- oneTBB-2021.5.0/cmake/config_generation.cmake.orig 2022-05-13 15:38:42.367469900 +0300 -+++ oneTBB-2021.5.0/cmake/config_generation.cmake 2022-05-13 15:40:14.968844600 +0300 -@@ -89,9 +89,9 @@ +--- oneTBB-2020.2/cmake/TBBInstallConfig.cmake.orig 2020-05-06 13:57:21.567903800 +0300 ++++ oneTBB-2020.2/cmake/TBBInstallConfig.cmake 2020-05-06 14:00:04.566313500 +0300 +@@ -111,9 +111,9 @@ # Expand TBB_LIB_REL_PATH here in IMPORTED_IMPLIB property and - # redefine it with TBB_DLL_REL_PATH value to properly fill IMPORTED_LOCATION property in TBBConfig.cmake.in template. + # redefine it with TBB_BIN_REL_PATH value to properly fill IMPORTED_LOCATION property in TBBConfig.cmake.in template. set(TBB_IMPLIB_RELEASE " -- IMPORTED_IMPLIB_RELEASE \"\${_tbb_root}/${TBB_LIB_REL_PATH}/\${_tbb_subdir}/\${_tbb_component}\${_bin_version}.lib\"") -+ IMPORTED_IMPLIB_RELEASE \"\${_tbb_root}/${TBB_LIB_REL_PATH}/\${_tbb_subdir}/\${_tbb_component}\${_bin_version}.dll.a\"") +- IMPORTED_IMPLIB_RELEASE \"\${CMAKE_CURRENT_LIST_DIR}/${TBB_LIB_REL_PATH}/\${_tbb_component}.lib\"") ++ IMPORTED_IMPLIB_RELEASE \"\${CMAKE_CURRENT_LIST_DIR}/${TBB_LIB_REL_PATH}/lib\${_tbb_component}.dll.a\"") set(TBB_IMPLIB_DEBUG " -- IMPORTED_IMPLIB_DEBUG \"\${_tbb_root}/${TBB_LIB_REL_PATH}/\${_tbb_subdir}/\${_tbb_component}\${_bin_version}_debug.lib\"") -+ IMPORTED_IMPLIB_DEBUG \"\${_tbb_root}/${TBB_LIB_REL_PATH}/\${_tbb_subdir}/\${_tbb_component}\${_bin_version}d.dll.a\"") - set(TBB_LIB_REL_PATH ${TBB_DLL_REL_PATH}) +- IMPORTED_IMPLIB_DEBUG \"\${CMAKE_CURRENT_LIST_DIR}/${TBB_LIB_REL_PATH}/\${_tbb_component}_debug.lib\"") ++ IMPORTED_IMPLIB_DEBUG \"\${CMAKE_CURRENT_LIST_DIR}/${TBB_LIB_REL_PATH}/lib\${_tbb_component}_debug.dll.a\"") + set(TBB_LIB_REL_PATH ${TBB_BIN_REL_PATH}) + else() + message(FATAL_ERROR "Unsupported OS name: ${tbb_system_name}") +--- oneTBB-2020.2/cmake/TBBMakeConfig.cmake.orig 2020-05-06 13:59:23.701848600 +0300 ++++ oneTBB-2020.2/cmake/TBBMakeConfig.cmake 2020-05-06 14:01:43.382845200 +0300 +@@ -91,15 +91,15 @@ - if (tbb_gen_cfg_HANDLE_SUBDIRS) ---- oneTBB-2021.5.0/src/tbb/CMakeLists.txt.orig 2022-05-13 16:00:17.804666400 +0300 -+++ oneTBB-2021.5.0/src/tbb/CMakeLists.txt 2022-05-13 16:00:59.259080300 +0300 -@@ -123,7 +123,7 @@ + if (tbb_MK_CONFIG_FOR_SOURCE) + set(TBB_IMPLIB_RELEASE " +- IMPORTED_IMPLIB_RELEASE \"${tbb_MK_TBB_RELEASE_DIR}/\${_tbb_component}.lib\"") ++ IMPORTED_IMPLIB_RELEASE \"${tbb_MK_TBB_RELEASE_DIR}/lib\${_tbb_component}.dll.a\"") + set(TBB_IMPLIB_DEBUG " +- IMPORTED_IMPLIB_DEBUG \"${tbb_MK_TBB_DEBUG_DIR}/\${_tbb_component}_debug.lib\"") ++ IMPORTED_IMPLIB_DEBUG \"${tbb_MK_TBB_DEBUG_DIR}/lib\${_tbb_component}_debug.dll.a\"") + else() + set(TBB_IMPLIB_RELEASE " +- IMPORTED_IMPLIB_RELEASE \"\${_tbb_root}/lib/\${_tbb_arch_subdir}/\${_tbb_compiler_subdir}/\${_tbb_component}.lib\"") ++ IMPORTED_IMPLIB_RELEASE \"\${_tbb_root}/lib/\${_tbb_arch_subdir}/\${_tbb_compiler_subdir}/lib\${_tbb_component}.dll.a\"") + set(TBB_IMPLIB_DEBUG " +- IMPORTED_IMPLIB_DEBUG \"\${_tbb_root}/lib/\${_tbb_arch_subdir}/\${_tbb_compiler_subdir}/\${_tbb_component}_debug.lib\"") ++ IMPORTED_IMPLIB_DEBUG \"\${_tbb_root}/lib/\${_tbb_arch_subdir}/\${_tbb_compiler_subdir}/lib\${_tbb_component}_debug.dll.a\"") + endif() - tbb_install_target(tbb) - --if (WIN32) -+if (MSVC) - # Create a copy of target linker file (tbb[_debug].lib) with legacy name (tbb[_debug].lib) - # to support previous user experience for linkage. - install(FILES + # Note: multiline variable diff --git a/mingw-w64-intel-tbb/tbb-dont-set-crt-version-for-ucrt.patch b/mingw-w64-intel-tbb/tbb-dont-set-crt-version-for-ucrt.patch new file mode 100644 index 0000000000..bdf3e16abb --- /dev/null +++ b/mingw-w64-intel-tbb/tbb-dont-set-crt-version-for-ucrt.patch @@ -0,0 +1,13 @@ +diff --git a/build/windows.gcc.inc b/build/windows.gcc.inc +index eef1c1b8..cbf4d581 100644 +--- a/build/windows.gcc.inc ++++ b/build/windows.gcc.inc +@@ -95,7 +95,7 @@ CPLUS_FLAGS += -DUSE_WINTHREAD + CPLUS_FLAGS += -D_WIN32_WINNT=$(_WIN32_WINNT) + + # MinGW specific +-CPLUS_FLAGS += -DMINGW_HAS_SECURE_API=1 -D__MSVCRT_VERSION__=0x0700 -msse -mthreads ++CPLUS_FLAGS += -DMINGW_HAS_SECURE_API=1 -msse -mthreads + + CONLY = gcc + debugger = gdb