From 4166c3224f331a2036921e6c49f6d39121de88b7 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Tue, 19 May 2015 16:24:13 -0700 Subject: [PATCH] link polyvox library in with entities --- CMakeLists.txt | 1 + cmake/externals/polyvox/CMakeLists.txt | 34 ++++++++++++++++++ cmake/modules/FindPolyVox.cmake | 50 ++++++++++++++++++++++++++ libraries/entities/CMakeLists.txt | 6 +++- 4 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 cmake/externals/polyvox/CMakeLists.txt create mode 100644 cmake/modules/FindPolyVox.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 347341efa0..b27f8862de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -179,6 +179,7 @@ option(GET_TBB "Get Threading Building Blocks library automatically as external option(GET_LIBOVR "Get LibOVR library automatically as external project" 1) option(USE_NSIGHT "Attempt to find the nSight libraries" 1) option(GET_VHACD "Get V-HACD library automatically as external project" 1) +option(GET_POLYVOX "Get polyvox library automatically as external project" 1) if (WIN32) option(GET_GLEW "Get GLEW library automatically as external project" 1) diff --git a/cmake/externals/polyvox/CMakeLists.txt b/cmake/externals/polyvox/CMakeLists.txt new file mode 100644 index 0000000000..5c1ea4f378 --- /dev/null +++ b/cmake/externals/polyvox/CMakeLists.txt @@ -0,0 +1,34 @@ +set(EXTERNAL_NAME polyvox) + +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 bbf8040b1e3f338cd51bdcccd0945978 + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH= + BINARY_DIR ${EXTERNAL_PROJECT_PREFIX}/build + LOG_DOWNLOAD 1 + LOG_CONFIGURE 1 + LOG_BUILD 1 +) + +ExternalProject_Get_Property(${EXTERNAL_NAME} INSTALL_DIR) + +string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) +set(${EXTERNAL_NAME_UPPER}_CORE_INCLUDE_DIRS ${INSTALL_DIR}/include/PolyVoxCore CACHE FILEPATH + "Path to polyvox core include directory") +set(${EXTERNAL_NAME_UPPER}_UTIL_INCLUDE_DIRS ${INSTALL_DIR}/include/PolyVoxUtil CACHE FILEPATH + "Path to polyvox util include directory") + + +if (WIN32) + 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") +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") +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") +endif () diff --git a/cmake/modules/FindPolyVox.cmake b/cmake/modules/FindPolyVox.cmake new file mode 100644 index 0000000000..1ddab877dd --- /dev/null +++ b/cmake/modules/FindPolyVox.cmake @@ -0,0 +1,50 @@ +# +# FindPolyvox.cmake +# +# Try to find the libpolyvox resampling library +# +# You can provide a LIBPOLYVOX_ROOT_DIR which contains lib and include directories +# +# Once done this will define +# +# POLYVOX_FOUND - system found libpolyvox +# POLYVOX_INCLUDE_DIRS - the libpolyvox include directory +# POLYVOX_LIBRARIES - link to this to use libpolyvox +# +# Created on 1/22/2015 by Stephen Birarda +# Copyright 2015 High Fidelity, Inc. +# +# 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("polyvox") + +find_path(POLYVOX_CORE_INCLUDE_DIRS PolyVoxCore/SimpleVolume.h PATH_SUFFIXES include/PolyVoxCore HINTS ${POLYVOX_SEARCH_DIRS}) +find_path(POLYVOX_UTIL_INCLUDE_DIRS PolyVoxUtil/Serialization.h PATH_SUFFIXES include/PolyVoxUtil HINTS ${POLYVOX_SEARCH_DIRS}) + +find_library(POLYVOX_CORE_LIBRARY NAMES PolyVoxCore PATH_SUFFIXES lib HINTS ${POLYVOX_SEARCH_DIRS}) +find_library(POLYVOX_UTIL_LIBRARY NAMES PolyVoxUtil PATH_SUFFIXES lib HINTS ${POLYVOX_SEARCH_DIRS}) + + +if (WIN32) + find_path(POLYVOX_DLL_PATH polyvox.dll PATH_SUFFIXES bin HINTS ${POLYVOX_SEARCH_DIRS}) +endif() + +set(POLYVOX_REQUIREMENTS POLYVOX_CORE_INCLUDE_DIRS POLYVOX_UTIL_INCLUDE_DIRS POLYVOX_CORE_LIBRARY POLYVOX_UTIL_LIBRARY) +if (WIN32) + list(APPEND POLYVOX_REQUIREMENTS POLYVOX_DLL_PATH) +endif () + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Polyvox DEFAULT_MSG ${POLYVOX_REQUIREMENTS}) + +if (WIN32) + add_paths_to_fixup_libs(${POLYVOX_DLL_PATH}) +endif () + +set(POLYVOX_INCLUDE_DIRS ${POLYVOX_CORE_INCLUDE_DIRS} ${POLYVOX_UTIL_INCLUDE_DIRS}) +set(POLYVOX_LIBRARIES ${POLYVOX_CORE_LIBRARY} ${POLYVOX_UTIL_LIBRARY}) + +mark_as_advanced(POLYVOX_INCLUDE_DIRS POLYVOX_LIBRARIES POLYVOX_SEARCH_DIRS) diff --git a/libraries/entities/CMakeLists.txt b/libraries/entities/CMakeLists.txt index d21906fa3f..c78166b050 100644 --- a/libraries/entities/CMakeLists.txt +++ b/libraries/entities/CMakeLists.txt @@ -7,10 +7,14 @@ add_dependency_external_projects(glm) find_package(GLM REQUIRED) target_include_directories(${TARGET_NAME} PUBLIC ${GLM_INCLUDE_DIRS}) -add_dependency_external_projects(bullet) +add_dependency_external_projects(bullet polyvox) find_package(Bullet REQUIRED) target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) +find_package(PolyVox REQUIRED) +target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${POLYVOX_INCLUDE_DIRS}) +target_link_libraries(${TARGET_NAME} ${POLYVOX_LIBRARIES}) + link_hifi_libraries(avatars shared octree gpu model fbx networking animation environment)