mirror of
https://github.com/overte-org/overte.git
synced 2025-06-17 14:20:43 +02:00
This uses a variable that can be overriden with an environment variable. This makes it easy for the community to create alternate asset hosts. Due to vcpkg using a clean environment, variables can't be easily passed to cmake scripts run by vcpkg. This was worked around by writing the data that needs to be passed into temporary files and reading it from the vcpkg ports.
107 lines
3.9 KiB
CMake
107 lines
3.9 KiB
CMake
set(EXTERNAL_NAME tbb)
|
|
|
|
include(ExternalProject)
|
|
|
|
if (WIN32)
|
|
set(DOWNLOAD_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/tbb2017_20170604oss_win_slim.zip")
|
|
set(DOWNLOAD_MD5 065934458e3db88397f3d10e7eea536c)
|
|
elseif (APPLE)
|
|
set(DOWNLOAD_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/tbb2017_20170604oss_mac_slim.tar.gz")
|
|
set(DOWNLOAD_MD5 62bde626b396f8e1a85c6a8ded1d8105)
|
|
else ()
|
|
set(DOWNLOAD_URL "${EXTERNAL_BUILD_ASSETS}/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")
|
|
|
|
ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR)
|
|
|
|
string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER)
|
|
|
|
if (APPLE)
|
|
set(_TBB_LIB_DIR "${SOURCE_DIR}/lib")
|
|
set(_LIB_PREFIX "lib")
|
|
set(_LIB_EXT "dylib")
|
|
|
|
ExternalProject_Add_Step(
|
|
${EXTERNAL_NAME}
|
|
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 download
|
|
WORKING_DIRECTORY <SOURCE_DIR>
|
|
LOG 1
|
|
)
|
|
elseif (WIN32)
|
|
if (MSVC_VERSION GREATER_EQUAL 1900)
|
|
set(_TBB_MSVC_DIR "vc14")
|
|
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()
|
|
|
|
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/android")
|
|
set(_LIB_PREFIX "lib")
|
|
set(_LIB_EXT "so")
|
|
elseif (UNIX)
|
|
set(_LIB_PREFIX "lib")
|
|
set(_LIB_EXT "so")
|
|
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(_TBB_ARCH_DIR "intel64")
|
|
else()
|
|
set(_TBB_ARCH_DIR "ia32")
|
|
endif()
|
|
|
|
execute_process(
|
|
COMMAND ${CMAKE_C_COMPILER} -dumpversion
|
|
OUTPUT_VARIABLE GCC_VERSION
|
|
)
|
|
|
|
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)
|
|
set(${EXTERNAL_NAME_UPPER}_LIBRARY_DEBUG ${_TBB_LIB_DIR}/${_LIB_PREFIX}tbb_debug.${_LIB_EXT} CACHE FILEPATH "TBB debug library location")
|
|
set(${EXTERNAL_NAME_UPPER}_MALLOC_LIBRARY_DEBUG ${_TBB_LIB_DIR}/${_LIB_PREFIX}tbbmalloc_debug.${_LIB_EXT} CACHE FILEPATH "TBB malloc debug library location")
|
|
set(${EXTERNAL_NAME_UPPER}_LIBRARY_RELEASE ${_TBB_LIB_DIR}/${_LIB_PREFIX}tbb.${_LIB_EXT} CACHE FILEPATH "TBB release library location")
|
|
set(${EXTERNAL_NAME_UPPER}_MALLOC_LIBRARY_RELEASE ${_TBB_LIB_DIR}/${_LIB_PREFIX}tbbmalloc.${_LIB_EXT} CACHE FILEPATH "TBB malloc release library location")
|
|
endif ()
|
|
|
|
if (DEFINED ${EXTERNAL_NAME_UPPER}_LIBRARY_RELEASE)
|
|
set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIRS ${SOURCE_DIR}/include CACHE STRING "List of tbb include directories")
|
|
endif ()
|
|
|