From f0c4aef93291471aaf1bb00c717bee9abce2ab6d Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 30 Mar 2015 17:26:33 -0700 Subject: [PATCH] download and make tbb for OS X --- cmake/externals/tbb/CMakeLists.txt | 34 +++++++++++-------- .../tbb/OSXTBBInstallNameChange.cmake | 18 ++-------- ...droidTBBLibCopy.cmake => TBBLibCopy.cmake} | 4 +-- 3 files changed, 25 insertions(+), 31 deletions(-) rename cmake/externals/tbb/{AndroidTBBLibCopy.cmake => TBBLibCopy.cmake} (94%) diff --git a/cmake/externals/tbb/CMakeLists.txt b/cmake/externals/tbb/CMakeLists.txt index ad46196b95..b9b2b65010 100644 --- a/cmake/externals/tbb/CMakeLists.txt +++ b/cmake/externals/tbb/CMakeLists.txt @@ -13,16 +13,28 @@ if (ANDROID) BUILD_COMMAND ${NDK_BUILD_COMMAND} --directory=jni target=android tbb tbbmalloc arch=arm BUILD_IN_SOURCE 1 CONFIGURE_COMMAND "" - INSTALL_COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/AndroidTBBLibCopy.cmake + 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) + 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 ) else () - if (APPLE) - set(DOWNLOAD_URL http://hifi-public.s3.amazonaws.com/dependencies/tbb43_20150316oss_osx.tgz) - set(DOWNLOAD_MD5 25a36ebff070ff801760ec658079f6aa) - elseif (WIN32) + if (WIN32) set(DOWNLOAD_URL http://s3.amazonaws.com/hifi-public/dependencies/tbb43_20150316oss_win.zip) set(DOWNLOAD_MD5 d250d40bb93b255f75bcbb19e976a440) else () @@ -46,7 +58,7 @@ ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR) string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) if (APPLE) - set(_TBB_LIB_DIR "${SOURCE_DIR}/lib/libc++") + set(_TBB_LIB_DIR "${SOURCE_DIR}/lib") set(_LIB_PREFIX "lib") set(_LIB_EXT "dylib") @@ -95,14 +107,8 @@ elseif (UNIX) endif () if (DEFINED _TBB_LIB_DIR) - if (NOT APPLE) - 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") - else () - set(${EXTERNAL_NAME_UPPER}_LIBRARY_DEBUG "" CACHE FILEPATH "TBB debug library location") - set(${EXTERNAL_NAME_UPPER}_MALLOC_LIBRARY_DEBUG "" CACHE FILEPATH "TBB malloc debug library location") - endif () - + 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 () diff --git a/cmake/externals/tbb/OSXTBBInstallNameChange.cmake b/cmake/externals/tbb/OSXTBBInstallNameChange.cmake index c263ed7d2e..cc4df46812 100644 --- a/cmake/externals/tbb/OSXTBBInstallNameChange.cmake +++ b/cmake/externals/tbb/OSXTBBInstallNameChange.cmake @@ -10,9 +10,11 @@ # # first find the so files in the source dir -set(_TBB_LIBRARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/libc++) +set(_TBB_LIBRARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib) file(GLOB_RECURSE _TBB_LIBRARIES "${_TBB_LIBRARY_DIR}/*.dylib") +message(${_TBB_LIBRARIES}) + # raise an error if we found none if (NOT _TBB_LIBRARIES) message(FATAL_ERROR "Did not find any TBB libraries") @@ -28,20 +30,6 @@ find_program(LIPO_COMMAND NAMES lipo DOC "Path to the lipo command") foreach(_TBB_LIBRARY ${_TBB_LIBRARIES}) get_filename_component(_TBB_LIBRARY_FILENAME ${_TBB_LIBRARY} NAME) - set(_LIPO_ARGS -remove i386 ${_TBB_LIBRARY_FILENAME} -output ${_TBB_LIBRARY_FILENAME}) - message(STATUS "${LIPO_COMMAND} ${_LIPO_ARGS}") - - # first we use lipo to remove i386 from each dylib - execute_process( - COMMAND ${LIPO_COMMAND} ${_LIPO_ARGS} - WORKING_DIRECTORY ${_TBB_LIBRARY_DIR} - ERROR_VARIABLE _LIPO_ERROR - ) - - if (_LIPO_ERROR) - message(FATAL_ERROR "There was an error removing i386 for ${_TBB_LIBRARY_FILENAME} - ${_LIPO_ERROR}") - endif () - set(_INSTALL_NAME_ARGS ${INSTALL_NAME_TOOL_COMMAND} -id ${_TBB_LIBRARY} ${_TBB_LIBRARY_FILENAME}) message(STATUS "${INSTALL_NAME_COMMAND} ${_INSTALL_NAME_ARGS}") diff --git a/cmake/externals/tbb/AndroidTBBLibCopy.cmake b/cmake/externals/tbb/TBBLibCopy.cmake similarity index 94% rename from cmake/externals/tbb/AndroidTBBLibCopy.cmake rename to cmake/externals/tbb/TBBLibCopy.cmake index 1c7697ab54..8f5423750b 100644 --- a/cmake/externals/tbb/AndroidTBBLibCopy.cmake +++ b/cmake/externals/tbb/TBBLibCopy.cmake @@ -1,5 +1,5 @@ # -# AndroidTBBLibCopy.cmake +# TBBLibCopy.cmake # cmake/externals/tbb # # Copyright 2015 High Fidelity, Inc. @@ -10,7 +10,7 @@ # # first find the so files in the source dir -file(GLOB_RECURSE _TBB_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/build/*.so") +file(GLOB_RECURSE _TBB_LIBRARIES "${CMAKE_CURRENT_SOURCE_DIR}/build/*.${TBB_LIBS_SUFFIX}") # raise an error if we found none if (NOT _TBB_LIBRARIES)