From 7c4b89d91749208f951e36266d3a3acdf2b1e13a Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Wed, 27 May 2015 11:56:57 -0700 Subject: [PATCH] get polyvox to build on osx --- ...hange.cmake => OSXInstallNameChange.cmake} | 27 +++++++++---------- cmake/externals/polyvox/CMakeLists.txt | 24 ++++++++++++++--- cmake/externals/tbb/CMakeLists.txt | 6 +++-- 3 files changed, 36 insertions(+), 21 deletions(-) rename cmake/externals/{tbb/OSXTBBInstallNameChange.cmake => OSXInstallNameChange.cmake} (53%) diff --git a/cmake/externals/tbb/OSXTBBInstallNameChange.cmake b/cmake/externals/OSXInstallNameChange.cmake similarity index 53% rename from cmake/externals/tbb/OSXTBBInstallNameChange.cmake rename to cmake/externals/OSXInstallNameChange.cmake index 0fa377959b..4922f2f8a5 100644 --- a/cmake/externals/tbb/OSXTBBInstallNameChange.cmake +++ b/cmake/externals/OSXInstallNameChange.cmake @@ -1,6 +1,6 @@ # -# OSXTBBInstallNameChange.cmake -# cmake/externals/tbb +# OSXInstallNameChange.cmake +# cmake/macros # # Copyright 2015 High Fidelity, Inc. # Created by Stephen Birarda on February 20, 2014 @@ -10,36 +10,33 @@ # # first find the so files in the source dir -set(_TBB_LIBRARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib) -file(GLOB_RECURSE _TBB_LIBRARIES "${_TBB_LIBRARY_DIR}/*.dylib") +message("INSTALL_NAME_LIBRARY_DIR ${INSTALL_NAME_LIBRARY_DIR}") -# raise an error if we found none -if (NOT _TBB_LIBRARIES) - message(FATAL_ERROR "Did not find any TBB libraries") +file(GLOB_RECURSE _LIBRARIES "${INSTALL_NAME_LIBRARY_DIR}/*.dylib") + +if (NOT _LIBRARIES) + message(FATAL_ERROR "OSXInstallNameChange -- no libraries found: ${INSTALL_NAME_LIBRARY_DIR}") endif () # find the install_name_tool command find_program(INSTALL_NAME_TOOL_COMMAND NAMES install_name_tool DOC "Path to the install_name_tool command") -# find the lipo command -find_program(LIPO_COMMAND NAMES lipo DOC "Path to the lipo command") - # enumerate the libraries -foreach(_TBB_LIBRARY ${_TBB_LIBRARIES}) - get_filename_component(_TBB_LIBRARY_FILENAME ${_TBB_LIBRARY} NAME) +foreach(_LIBRARY ${_LIBRARIES}) + get_filename_component(_LIBRARY_FILENAME ${_LIBRARY} NAME) - set(_INSTALL_NAME_ARGS ${INSTALL_NAME_TOOL_COMMAND} -id ${_TBB_LIBRARY} ${_TBB_LIBRARY_FILENAME}) + set(_INSTALL_NAME_ARGS ${INSTALL_NAME_TOOL_COMMAND} -id ${_LIBRARY} ${_LIBRARY_FILENAME}) message(STATUS "${INSTALL_NAME_COMMAND} ${_INSTALL_NAME_ARGS}") execute_process( COMMAND ${INSTALL_NAME_COMMAND} ${_INSTALL_NAME_ARGS} - WORKING_DIRECTORY ${_TBB_LIBRARY_DIR} + WORKING_DIRECTORY ${INSTALL_NAME_LIBRARY_DIR} ERROR_VARIABLE _INSTALL_NAME_ERROR ) if (_INSTALL_NAME_ERROR) - message(FATAL_ERROR "There was an error changing install name for ${_TBB_LIBRARY_FILENAME} - ${_INSTALL_NAME_ERROR}") + message(FATAL_ERROR "There was an error changing install name for ${_LIBRARY_FILENAME} - ${_INSTALL_NAME_ERROR}") endif () endforeach() diff --git a/cmake/externals/polyvox/CMakeLists.txt b/cmake/externals/polyvox/CMakeLists.txt index 7e719887e2..1089692b37 100644 --- a/cmake/externals/polyvox/CMakeLists.txt +++ b/cmake/externals/polyvox/CMakeLists.txt @@ -4,8 +4,8 @@ include(ExternalProject) ExternalProject_Add( ${EXTERNAL_NAME} # URL http://hifi-public.s3.amazonaws.com/dependencies/polyvox-master.zip - URL http://headache.hungry.com/~seth/hifi/polyvox-master.zip - URL_MD5 b62e8d8711a4f462377d45e2dd1a22c0 + URL http://headache.hungry.com/~seth/hifi/polyvox-master-2015-5-27.zip + URL_MD5 f1241daae74ff69b7e31961edaff1555 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= BINARY_DIR ${EXTERNAL_PROJECT_PREFIX}/build LOG_DOWNLOAD 1 @@ -13,8 +13,24 @@ ExternalProject_Add( LOG_BUILD 1 ) + ExternalProject_Get_Property(${EXTERNAL_NAME} INSTALL_DIR) +if (APPLE) + set(INSTALL_NAME_LIBRARY_DIR ${INSTALL_DIR}/lib) + message(STATUS "in polyvox INSTALL_NAME_LIBRARY_DIR ${INSTALL_NAME_LIBRARY_DIR}") + ExternalProject_Add_Step( + ${EXTERNAL_NAME} + change-install-name + COMMENT "Calling install_name_tool on libraries to fix install name for dylib linking" + COMMAND ${CMAKE_COMMAND} -DINSTALL_NAME_LIBRARY_DIR=${INSTALL_NAME_LIBRARY_DIR} -P ${EXTERNAL_PROJECT_DIR}/OSXInstallNameChange.cmake + DEPENDEES install + WORKING_DIRECTORY + LOG 1 + ) +endif () + + string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) if (WIN32) @@ -34,8 +50,8 @@ if (WIN32) set(${EXTERNAL_NAME_UPPER}_CORE_LIBRARY ${INSTALL_DIR}/PolyVoxCore/lib/PolyVoxCore.lib CACHE FILEPATH "polyvox core library") # set(${EXTERNAL_NAME_UPPER}_UTIL_LIBRARY ${INSTALL_DIR}/PolyVoxUtil/lib/PolyVoxUtil.lib CACHE FILEPATH "polyvox util library") elseif (APPLE) - set(${EXTERNAL_NAME_UPPER}_CORE_LIBRARY ${INSTALL_DIR}/lib/polyvox.lib CACHE FILEPATH "polyvox core library") -# set(${EXTERNAL_NAME_UPPER}_UTIL_LIBRARY ${INSTALL_DIR}/lib/polyvox.lib CACHE FILEPATH "polyvox util library") +set(${EXTERNAL_NAME_UPPER}_CORE_LIBRARY ${INSTALL_DIR}/lib/libPolyVoxCore.dylib CACHE FILEPATH "polyvox core library") +# set(${EXTERNAL_NAME_UPPER}_UTIL_LIBRARY ${INSTALL_DIR}/lib/libPolyVoxUtil.dylib CACHE FILEPATH "polyvox util library") else () set(${EXTERNAL_NAME_UPPER}_CORE_LIBRARY ${INSTALL_DIR}/lib/libPolyVoxCore.so CACHE FILEPATH "polyvox core library") # set(${EXTERNAL_NAME_UPPER}_UTIL_LIBRARY ${INSTALL_DIR}/lib/libPolyVoxUtil.so CACHE FILEPATH "polyvox util library") diff --git a/cmake/externals/tbb/CMakeLists.txt b/cmake/externals/tbb/CMakeLists.txt index b9b2b65010..7af91ad3d9 100644 --- a/cmake/externals/tbb/CMakeLists.txt +++ b/cmake/externals/tbb/CMakeLists.txt @@ -57,6 +57,8 @@ ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR) string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) +message("HERE in tbb") + if (APPLE) set(_TBB_LIB_DIR "${SOURCE_DIR}/lib") set(_LIB_PREFIX "lib") @@ -66,7 +68,7 @@ if (APPLE) ${EXTERNAL_NAME} change-install-name COMMENT "Calling install_name_tool on TBB libraries to fix install name for dylib linking" - COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/OSXTBBInstallNameChange.cmake + COMMAND ${CMAKE_COMMAND} -DINSTALL_NAME_LIBRARY_DIR=${_TBB_LIB_DIR} -P ${EXTERNAL_PROJECT_DIR}/OSXInstallNameChange.cmake DEPENDEES install WORKING_DIRECTORY LOG 1 @@ -115,4 +117,4 @@ endif () if (DEFINED ${EXTERNAL_NAME_UPPER}_LIBRARY_RELEASE) set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIRS ${SOURCE_DIR}/include CACHE TYPE "List of tbb include directories") -endif () \ No newline at end of file +endif ()