Merge pull request #11156 from birarda/bug/update-tbb-vc14

stop compiling tbb from source and use vc14 version for VS 2015/2017
This commit is contained in:
Stephen Birarda 2017-08-10 11:25:21 -07:00 committed by GitHub
commit e8bd4334fe
3 changed files with 66 additions and 75 deletions

View file

@ -15,10 +15,6 @@ if (WIN32)
cmake_policy(SET CMP0020 NEW) cmake_policy(SET CMP0020 NEW)
endif (WIN32) endif (WIN32)
if (POLICY CMP0028)
cmake_policy(SET CMP0028 OLD)
endif ()
if (POLICY CMP0043) if (POLICY CMP0043)
cmake_policy(SET CMP0043 OLD) cmake_policy(SET CMP0043 OLD)
endif () endif ()
@ -83,7 +79,7 @@ endif(WIN32)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.3") if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.3")
# GLM 0.9.8 on Ubuntu 14 (gcc 4.4) has issues with the simd declarations # GLM 0.9.8 on Ubuntu 14 (gcc 4.4) has issues with the simd declarations
add_definitions(-DGLM_FORCE_PURE) add_definitions(-DGLM_FORCE_PURE)
endif() endif()
endif() endif()

View file

@ -2,57 +2,30 @@ set(EXTERNAL_NAME tbb)
include(ExternalProject) include(ExternalProject)
if (ANDROID) if (WIN32)
set(DOWNLOAD_URL http://hifi-public.s3.amazonaws.com/dependencies/tbb2017_20170604oss_win_slim.zip)
find_program(NDK_BUILD_COMMAND NAMES ndk-build DOC "Path to the ndk-build command") set(DOWNLOAD_MD5 065934458e3db88397f3d10e7eea536c)
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
)
elseif (APPLE) elseif (APPLE)
find_program(MAKE_COMMAND NAMES make DOC "Path to the make command") set(DOWNLOAD_URL http://s3.amazonaws.com/hifi-public/dependencies/tbb2017_20170604oss_mac_slim.tar.gz)
set(DOWNLOAD_MD5 62bde626b396f8e1a85c6a8ded1d8105)
ExternalProject_Add( elseif (ANDROID)
${EXTERNAL_NAME} set(DOWNLOAD_URL http://hifi-public.s3.amazonaws.com/dependencies/tbb2017_20170604oss_and_slim.tar.gz)
URL http://hifi-public.s3.amazonaws.com/dependencies/tbb43_20150316oss_src.tgz set(DOWNLOAD_MD5 04d50b64e1d81245a1be5f75f34d64c7)
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
)
else () else ()
if (WIN32) set(DOWNLOAD_URL http://hifi-public.s3.amazonaws.com/dependencies/tbb2017_20170604oss_lin_slim.tar.gz)
set(DOWNLOAD_URL http://s3.amazonaws.com/hifi-public/dependencies/tbb43_20150316oss_win.zip) set(DOWNLOAD_MD5 2a5c721f40fa3503ffc12c18dd00011c)
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
)
endif () 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) # Hide this external target (for ide users)
set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals") set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals")
@ -70,22 +43,32 @@ if (APPLE)
change-install-name change-install-name
COMMENT "Calling install_name_tool on TBB libraries to fix install name for dylib linking" 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 COMMAND ${CMAKE_COMMAND} -DINSTALL_NAME_LIBRARY_DIR=${_TBB_LIB_DIR} -P ${EXTERNAL_PROJECT_DIR}/OSXInstallNameChange.cmake
DEPENDEES install DEPENDEES download
WORKING_DIRECTORY <SOURCE_DIR> WORKING_DIRECTORY <SOURCE_DIR>
LOG 1 LOG 1
) )
elseif (WIN32) elseif (WIN32)
if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") if (MSVC_VERSION GREATER_EQUAL 1900)
set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/intel64/vc12") set(_TBB_MSVC_DIR "vc14")
set(${EXTERNAL_NAME_UPPER}_DLL_PATH "${SOURCE_DIR}/bin/intel64/vc12" CACHE PATH "Path to TBB DLLs") elseif (MSVC_VERSION GREATER_EQUAL 1800)
set(_TBB_MSVC_DIR "vc12")
elseif (MSVC_VERSION GREATER_EQUAL 1700)
set(_TBB_MSVC_DIR "vc11")
else() else()
set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/ia32/vc12") message(FATAL_ERROR "MSVC ${MSVC_VERSION} not supported by Intel TBB")
set(${EXTERNAL_NAME_UPPER}_DLL_PATH "${SOURCE_DIR}/bin/ia32/vc12" CACHE PATH "Path to TBB DLLs")
endif() 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") set(_LIB_EXT "lib")
elseif (ANDROID) elseif (ANDROID)
set(_TBB_LIB_DIR "${SOURCE_DIR}/lib") set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/android")
set(_LIB_PREFIX "lib") set(_LIB_PREFIX "lib")
set(_LIB_EXT "so") set(_LIB_EXT "so")
elseif (UNIX) elseif (UNIX)
@ -103,15 +86,15 @@ elseif (UNIX)
OUTPUT_VARIABLE GCC_VERSION 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") 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) 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") set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/${_TBB_ARCH_DIR}/gcc4.1")
else () else ()
message(STATUS "Could not find a compatible version of Threading Building Blocks library for your compiler.") message(STATUS "Could not find a compatible version of Threading Building Blocks library for your compiler.")
endif () endif ()
endif () endif ()
if (DEFINED _TBB_LIB_DIR) if (DEFINED _TBB_LIB_DIR)

View file

@ -1,6 +1,6 @@
# #
# FindTBB.cmake # FindTBB.cmake
# #
# Try to find the Intel Threading Building Blocks library # Try to find the Intel Threading Building Blocks library
# #
# You can provide a TBB_ROOT_DIR which contains lib and include directories # 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. # Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html # See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
# #
include("${MACRO_DIR}/HifiLibrarySearchHints.cmake") include("${MACRO_DIR}/HifiLibrarySearchHints.cmake")
hifi_library_search_hints("tbb") hifi_library_search_hints("tbb")
@ -34,31 +34,43 @@ elseif (UNIX AND NOT ANDROID)
else() else()
set(_TBB_ARCH_DIR "ia32") set(_TBB_ARCH_DIR "ia32")
endif() endif()
execute_process( execute_process(
COMMAND ${CMAKE_C_COMPILER} -dumpversion COMMAND ${CMAKE_C_COMPILER} -dumpversion
OUTPUT_VARIABLE GCC_VERSION 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") set(_TBB_LIB_DIR "lib/${_TBB_ARCH_DIR}/gcc4.4")
elseif (GCC_VERSION VERSION_GREATER 4.1 OR GCC_VERSION VERSION_EQUAL 4.1) elseif (GCC_VERSION VERSION_GREATER 4.1 OR GCC_VERSION VERSION_EQUAL 4.1)
set(_TBB_LIB_DIR "lib/${_TBB_ARCH_DIR}/gcc4.1") set(_TBB_LIB_DIR "lib/${_TBB_ARCH_DIR}/gcc4.1")
else () else ()
message(FATAL_ERROR "Could not find a compatible version of Threading Building Blocks library for your compiler.") message(FATAL_ERROR "Could not find a compatible version of Threading Building Blocks library for your compiler.")
endif () endif ()
elseif (WIN32) elseif (WIN32)
if(CMAKE_SIZEOF_VOID_P EQUAL 8) if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(_TBB_ARCH_DIR "intel64") set(_TBB_ARCH_DIR "intel64")
else() else()
set(_TBB_ARCH_DIR "ia32") set(_TBB_ARCH_DIR "ia32")
endif() endif()
set(_TBB_LIB_DIR "lib/${_TBB_ARCH_DIR}/vc12") if (MSVC_VERSION GREATER_EQUAL 1900)
set(_TBB_MSVC_DIR "vc14")
find_path(TBB_DLL_PATH tbb_debug.dll PATH_SUFFIXES "bin/${_TBB_ARCH_DIR}/vc12" HINTS ${TBB_SEARCH_DIRS}) elseif (MSVC_VERSION GREATER_EQUAL 1800)
set(_TBB_MSVC_DIR "vc12")
elseif (MSVC_VERSION GREATER_EQUAL 1700)
set(_TBB_MSVC_DIR "vc11")
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) elseif (ANDROID)
set(_TBB_DEFAULT_INSTALL_DIR "/tbb") set(_TBB_DEFAULT_INSTALL_DIR "/tbb")
set(_TBB_LIB_NAME "tbb") set(_TBB_LIB_NAME "tbb")