From 57fe5ae8029fb1f05c419755a6c72ac6a643ae71 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 9 Aug 2017 17:55:15 -0700 Subject: [PATCH] use tbb binaries more and update for vc14 --- cmake/externals/tbb/CMakeLists.txt | 99 +++++++++++++----------------- cmake/modules/FindTBB.cmake | 36 +++++++---- 2 files changed, 65 insertions(+), 70 deletions(-) diff --git a/cmake/externals/tbb/CMakeLists.txt b/cmake/externals/tbb/CMakeLists.txt index 74f7e10859..eef2cddd05 100644 --- a/cmake/externals/tbb/CMakeLists.txt +++ b/cmake/externals/tbb/CMakeLists.txt @@ -2,57 +2,30 @@ set(EXTERNAL_NAME tbb) include(ExternalProject) -if (ANDROID) - - find_program(NDK_BUILD_COMMAND NAMES ndk-build DOC "Path to the ndk-build command") - - ExternalProject_Add( - ${EXTERNAL_NAME} - URL http://hifi-public.s3.amazonaws.com/dependencies/tbb43_20150316oss_src.tgz - URL_MD5 bf090eaa86cf89ea014b7b462786a440 - BUILD_COMMAND ${NDK_BUILD_COMMAND} --directory=jni target=android tbb tbbmalloc arch=arm - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND "" - INSTALL_COMMAND ${CMAKE_COMMAND} -DTBB_LIBS_SUFFIX=so -P ${CMAKE_CURRENT_SOURCE_DIR}/TBBLibCopy.cmake - LOG_DOWNLOAD 1 - LOG_CONFIGURE 1 - LOG_BUILD 1 - ) +if (WIN32) + set(DOWNLOAD_URL http://hifi-public.s3.amazonaws.com/dependencies/tbb2017_20170604oss_win_slim.zip) + set(DOWNLOAD_MD5 065934458e3db88397f3d10e7eea536c) elseif (APPLE) - find_program(MAKE_COMMAND NAMES make DOC "Path to the make command") - - ExternalProject_Add( - ${EXTERNAL_NAME} - URL http://hifi-public.s3.amazonaws.com/dependencies/tbb43_20150316oss_src.tgz - URL_MD5 bf090eaa86cf89ea014b7b462786a440 - BUILD_COMMAND ${MAKE_COMMAND} tbb_os=macos - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND "" - INSTALL_COMMAND ${CMAKE_COMMAND} -DTBB_LIBS_SUFFIX=dylib -P ${CMAKE_CURRENT_SOURCE_DIR}/TBBLibCopy.cmake - LOG_DOWNLOAD 1 - LOG_CONFIGURE 1 - LOG_BUILD 1 - ) + set(DOWNLOAD_URL http://s3.amazonaws.com/hifi-public/dependencies/tbb2017_20170604oss_mac_slim.tar.gz) + set(DOWNLOAD_MD5 62bde626b396f8e1a85c6a8ded1d8105) +elseif (ANDROID) + set(DOWNLOAD_URL http://hifi-public.s3.amazonaws.com/dependencies/tbb2017_20170604oss_and_slim.tar.gz) + set(DOWNLOAD_MD5 04d50b64e1d81245a1be5f75f34d64c7) else () - if (WIN32) - set(DOWNLOAD_URL http://s3.amazonaws.com/hifi-public/dependencies/tbb43_20150316oss_win.zip) - set(DOWNLOAD_MD5 d250d40bb93b255f75bcbb19e976a440) - else () - set(DOWNLOAD_URL http://s3.amazonaws.com/hifi-public/dependencies/tbb43_20150316oss_lin.tgz) - set(DOWNLOAD_MD5 7830ba2bc62438325fba2ec0c95367a5) - endif () - - ExternalProject_Add( - ${EXTERNAL_NAME} - URL ${DOWNLOAD_URL} - URL_MD5 ${DOWNLOAD_MD5} - BUILD_COMMAND "" - CONFIGURE_COMMAND "" - INSTALL_COMMAND "" - LOG_DOWNLOAD ON - ) + set(DOWNLOAD_URL http://hifi-public.s3.amazonaws.com/dependencies/tbb2017_20170604oss_lin_slim.tar.gz) + set(DOWNLOAD_MD5 2a5c721f40fa3503ffc12c18dd00011c) endif () +ExternalProject_Add( + ${EXTERNAL_NAME} + URL ${DOWNLOAD_URL} + URL_MD5 ${DOWNLOAD_MD5} + BUILD_COMMAND "" + CONFIGURE_COMMAND "" + INSTALL_COMMAND "" + LOG_DOWNLOAD ON +) + # Hide this external target (for ide users) set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals") @@ -70,22 +43,32 @@ if (APPLE) change-install-name COMMENT "Calling install_name_tool on TBB libraries to fix install name for dylib linking" COMMAND ${CMAKE_COMMAND} -DINSTALL_NAME_LIBRARY_DIR=${_TBB_LIB_DIR} -P ${EXTERNAL_PROJECT_DIR}/OSXInstallNameChange.cmake - DEPENDEES install + DEPENDEES download WORKING_DIRECTORY LOG 1 ) - elseif (WIN32) - if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") - set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/intel64/vc12") - set(${EXTERNAL_NAME_UPPER}_DLL_PATH "${SOURCE_DIR}/bin/intel64/vc12" CACHE PATH "Path to TBB DLLs") + if ("${MSVC_VERSION}" EQUAL "1700") + set(_TBB_MSVC_DIR, "vc11") + elseif ("${MSVC_VERSION}" EQUAL "1800") + set(_TBB_MSVC_DIR, "vc12") + elseif ("${MSVC_VERSION}" EQUAL "1900" OR "${MSVC_VERSION}" EQUAL "1910") + set(_TBB_MSVC_DIR, "vc14") else() - set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/ia32/vc12") - set(${EXTERNAL_NAME_UPPER}_DLL_PATH "${SOURCE_DIR}/bin/ia32/vc12" CACHE PATH "Path to TBB DLLs") + message(FATAL_ERROR "MSVC ${MSVC_VERSION} not supported by Intel TBB") endif() + + if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/intel64/${_TBB_MSVC_DIR}") + set(${EXTERNAL_NAME_UPPER}_DLL_PATH "${SOURCE_DIR}/bin/intel64/${_TBB_MSVC_DIR}" CACHE PATH "Path to TBB DLLs") + else() + set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/ia32/${_TBB_MSVC_DIR}") + set(${EXTERNAL_NAME_UPPER}_DLL_PATH "${SOURCE_DIR}/bin/ia32/${_TBB_MSVC_DIR}" CACHE PATH "Path to TBB DLLs") + endif() + set(_LIB_EXT "lib") elseif (ANDROID) - set(_TBB_LIB_DIR "${SOURCE_DIR}/lib") + set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/android") set(_LIB_PREFIX "lib") set(_LIB_EXT "so") elseif (UNIX) @@ -103,15 +86,15 @@ elseif (UNIX) OUTPUT_VARIABLE GCC_VERSION ) - if (GCC_VERSION VERSION_GREATER 4.4 OR GCC_VERSION VERSION_EQUAL 4.4) + if (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7) + set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/${_TBB_ARCH_DIR}/gcc4.7") + elseif (GCC_VERSION VERSION_GREATER 4.4 OR GCC_VERSION VERSION_EQUAL 4.4) set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/${_TBB_ARCH_DIR}/gcc4.4") elseif (GCC_VERSION VERSION_GREATER 4.1 OR GCC_VERSION VERSION_EQUAL 4.1) set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/${_TBB_ARCH_DIR}/gcc4.1") else () message(STATUS "Could not find a compatible version of Threading Building Blocks library for your compiler.") endif () - - endif () if (DEFINED _TBB_LIB_DIR) diff --git a/cmake/modules/FindTBB.cmake b/cmake/modules/FindTBB.cmake index 1ccdcd792d..602dbf79ae 100644 --- a/cmake/modules/FindTBB.cmake +++ b/cmake/modules/FindTBB.cmake @@ -1,6 +1,6 @@ -# +# # FindTBB.cmake -# +# # Try to find the Intel Threading Building Blocks library # # You can provide a TBB_ROOT_DIR which contains lib and include directories @@ -16,7 +16,7 @@ # # Distributed under the Apache License, Version 2.0. # See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -# +# include("${MACRO_DIR}/HifiLibrarySearchHints.cmake") hifi_library_search_hints("tbb") @@ -34,31 +34,43 @@ elseif (UNIX AND NOT ANDROID) else() set(_TBB_ARCH_DIR "ia32") endif() - + execute_process( COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION ) - - if (GCC_VERSION VERSION_GREATER 4.4 OR GCC_VERSION VERSION_EQUAL 4.4) + + if (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7) + set(_TBB_LIB_DIR "lib/${_TBB_ARCH_DIR}/gcc4.7") + elseif (GCC_VERSION VERSION_GREATER 4.4 OR GCC_VERSION VERSION_EQUAL 4.4) set(_TBB_LIB_DIR "lib/${_TBB_ARCH_DIR}/gcc4.4") elseif (GCC_VERSION VERSION_GREATER 4.1 OR GCC_VERSION VERSION_EQUAL 4.1) set(_TBB_LIB_DIR "lib/${_TBB_ARCH_DIR}/gcc4.1") else () message(FATAL_ERROR "Could not find a compatible version of Threading Building Blocks library for your compiler.") endif () - + elseif (WIN32) if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(_TBB_ARCH_DIR "intel64") else() set(_TBB_ARCH_DIR "ia32") endif() - - set(_TBB_LIB_DIR "lib/${_TBB_ARCH_DIR}/vc12") - - find_path(TBB_DLL_PATH tbb_debug.dll PATH_SUFFIXES "bin/${_TBB_ARCH_DIR}/vc12" HINTS ${TBB_SEARCH_DIRS}) - + + if ("${MSVC_VERSION}" EQUAL "1700") + set(_TBB_MSVC_DIR, "vc11") + elseif ("${MSVC_VERSION}" EQUAL "1800") + set(_TBB_MSVC_DIR, "vc12") + elseif ("${MSVC_VERSION}" EQUAL "1900" OR "${MSVC_VERSION}" EQUAL "1910") + set(_TBB_MSVC_DIR, "vc14") + else() + message(FATAL_ERROR "MSVC ${MSVC_VERSION} not supported by Intel TBB") + endif() + + set(_TBB_LIB_DIR "lib/${_TBB_ARCH_DIR}/${_TBB_MSVC_DIR}") + + find_path(TBB_DLL_PATH tbb_debug.dll PATH_SUFFIXES "bin/${_TBB_ARCH_DIR}/${_TBB_MSVC_DIR}" HINTS ${TBB_SEARCH_DIRS}) + elseif (ANDROID) set(_TBB_DEFAULT_INSTALL_DIR "/tbb") set(_TBB_LIB_NAME "tbb")