Skip to content

Commit

Permalink
Merge branch 'release-1.3.x'
Browse files Browse the repository at this point in the history
  • Loading branch information
jeffamstutz committed Jul 7, 2017
2 parents 60a5089 + 49ec1d2 commit 4907ab0
Show file tree
Hide file tree
Showing 23 changed files with 343 additions and 243 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
Version History
---------------

### Changes in v1.3.1:

- Improved robustness of OSPRay CMake find_package config
- Fixed bugs related to CMake configuration when using
the OSPRay SDK from an install
- Fixed issue with Embree library when installing with
`OSPRAY_INSTALL_DEPENDENCIES` enabled

### Changes in v1.3.0:

- New MPI distributed device to support MPI distributed applications
Expand Down
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${OSPCOMMON_DIR}/cmake)
##############################################################

INCLUDE(macros)
INCLUDE(ospray_macros)
INCLUDE(ospray_options)
INCLUDE(ispc)

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
OSPRay
======

This is release v1.3.0 of OSPRay. For changes and new features see the
This is release v1.3.1 of OSPRay. For changes and new features see the
[changelog](CHANGELOG.md). Also visit http://www.ospray.org for more
information.

Expand Down Expand Up @@ -76,7 +76,7 @@ before you can build OSPRay you need the following prerequisites:
for ISPC in the `PATH` and in the directory right "next to" the
checked-out OSPRay sources.[^1] Alternatively set the CMake variable
`ISPC_EXECUTABLE` to the location of the ISPC compiler.
- Per default OSPRay uses the [Intel® Threading Building
- Per default OSPRay uses the Intel® [Threading Building
Blocks](https://www.threadingbuildingblocks.org/) (TBB) as tasking
system, which we recommend for performance and flexibility reasons.
Alternatively you can set CMake variable `OSPRAY_TASKING_SYSTEM` to
Expand Down
81 changes: 4 additions & 77 deletions cmake/configure_embree.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,85 +14,12 @@
## limitations under the License. ##
## ======================================================================== ##

SET(EMBREE_VERSION_REQUIRED 2.13.0)

# Find existing Embree on the machine #######################################

FIND_PACKAGE(embree ${EMBREE_VERSION_REQUIRED} QUIET)
IF(NOT DEFINED EMBREE_INCLUDE_DIRS)
MESSAGE(FATAL_ERROR
"We did not find Embree installed on your system. OSPRay requires an"
" Embree installation >= v${EMBREE_VERSION_REQUIRED}, please download"
" and extract Embree or compile Embree from source, then set the"
" 'embree_DIR' variable to <embree-install-dir>/lib/cmake/embree-<version>.")
ENDIF()

# Check for required Embree features #######################################

OSPRAY_CHECK_EMBREE_FEATURE(ISPC_SUPPORT ISPC)
OSPRAY_CHECK_EMBREE_FEATURE(INTERSECTION_FILTER "intersection filter")
OSPRAY_CHECK_EMBREE_FEATURE(INTERSECTION_FILTER_RESTORE "intersection filter")
OSPRAY_CHECK_EMBREE_FEATURE(GEOMETRY_TRIANGLES "triangle geometries")
OSPRAY_CHECK_EMBREE_FEATURE(GEOMETRY_USER "user geometries")
OSPRAY_CHECK_EMBREE_FEATURE(RAY_PACKETS "ray packets")
OSPRAY_CHECK_EMBREE_FEATURE(BACKFACE_CULLING "backface culling" OFF)

# remove Embree's TBB libs (not needed, cyclic rpath)
SET(EMBREE_LIBRARIES ${EMBREE_LIBRARY})

IF (EMBREE_MAX_ISA STREQUAL "NONE")
SET(EMBREE_ISA_SUPPORTS_SSE2 ${EMBREE_ISA_SSE2})
SET(EMBREE_ISA_SUPPORTS_SSE4 ${EMBREE_ISA_SSE42})
SET(EMBREE_ISA_SUPPORTS_AVX ${EMBREE_ISA_AVX})
SET(EMBREE_ISA_SUPPORTS_AVX2 ${EMBREE_ISA_AVX2})
SET(EMBREE_ISA_SUPPORTS_AVX512KNL ${EMBREE_ISA_AVX512KNL})
SET(EMBREE_ISA_SUPPORTS_AVX512SKX ${EMBREE_ISA_AVX512SKX})
ELSE()
SET(EMBREE_ISA_SUPPORTS_SSE2 FALSE)
SET(EMBREE_ISA_SUPPORTS_SSE4 FALSE)
SET(EMBREE_ISA_SUPPORTS_AVX FALSE)
SET(EMBREE_ISA_SUPPORTS_AVX2 FALSE)
SET(EMBREE_ISA_SUPPORTS_AVX512KNL FALSE)
SET(EMBREE_ISA_SUPPORTS_AVX512SKX FALSE)

IF (EMBREE_MAX_ISA STREQUAL "SSE2")
SET(EMBREE_ISA_SUPPORTS_SSE2 TRUE)
ELSEIF (EMBREE_MAX_ISA MATCHES "SSE4\\.[12]$")
SET(EMBREE_ISA_SUPPORTS_SSE2 TRUE)
SET(EMBREE_ISA_SUPPORTS_SSE4 TRUE)
ELSEIF (EMBREE_MAX_ISA STREQUAL "AVX")
SET(EMBREE_ISA_SUPPORTS_SSE2 TRUE)
SET(EMBREE_ISA_SUPPORTS_SSE4 TRUE)
SET(EMBREE_ISA_SUPPORTS_AVX TRUE)
ELSEIF (EMBREE_MAX_ISA STREQUAL "AVX2")
SET(EMBREE_ISA_SUPPORTS_SSE2 TRUE)
SET(EMBREE_ISA_SUPPORTS_SSE4 TRUE)
SET(EMBREE_ISA_SUPPORTS_AVX TRUE)
SET(EMBREE_ISA_SUPPORTS_AVX2 TRUE)
ELSEIF (EMBREE_MAX_ISA STREQUAL "AVX512KNL")
SET(EMBREE_ISA_SUPPORTS_SSE2 TRUE)
SET(EMBREE_ISA_SUPPORTS_SSE4 TRUE)
SET(EMBREE_ISA_SUPPORTS_AVX TRUE)
SET(EMBREE_ISA_SUPPORTS_AVX2 TRUE)
SET(EMBREE_ISA_SUPPORTS_AVX512KNL TRUE)
ELSEIF (EMBREE_MAX_ISA STREQUAL "AVX512SKX")
SET(EMBREE_ISA_SUPPORTS_SSE2 TRUE)
SET(EMBREE_ISA_SUPPORTS_SSE4 TRUE)
SET(EMBREE_ISA_SUPPORTS_AVX TRUE)
SET(EMBREE_ISA_SUPPORTS_AVX2 TRUE)
SET(EMBREE_ISA_SUPPORTS_AVX512KNL TRUE)
SET(EMBREE_ISA_SUPPORTS_AVX512SKX TRUE)
ENDIF()
ENDIF()

IF (NOT (EMBREE_ISA_SUPPORTS_SSE4
OR EMBREE_ISA_SUPPORTS_AVX
OR EMBREE_ISA_SUPPORTS_AVX2
OR EMBREE_ISA_SUPPORTS_AVX512KNL
OR EMBREE_ISA_SUPPORTS_AVX512SKX))
MESSAGE(FATAL_ERROR
"Your Embree build needs to support at least one ISA >= SSE4.1!")
ENDIF()
ospray_find_embree(${EMBREE_VERSION_REQUIRED})
ospray_verify_embree_features()
ospray_determine_embree_isa_support()

# Configure OSPRay ISA last after we've detected what we got w/ Embree
OSPRAY_CONFIGURE_ISPC_ISA()
ospray_configure_ispc_isa()
50 changes: 35 additions & 15 deletions cmake/ospray_cmake_config.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -27,39 +27,59 @@ INSTALL(FILES ${CMAKE_BINARY_DIR}/ospray/version.h
)

# CMake config module
SET(ospray_MODULE_CONFIG_INPUT_DIR ${CMAKE_SOURCE_DIR}/cmake/ospray_cmake_config)
SET(ospray_MODULE_CONFIG_OUTPUT_DIR ${CMAKE_BINARY_DIR}/cmake)
SET(OSPRAY_MODULE_CONFIG_INPUT_DIR ${CMAKE_SOURCE_DIR}/cmake/ospray_cmake_config)
SET(OSPRAY_MODULE_CONFIG_OUTPUT_DIR ${CMAKE_BINARY_DIR}/cmake)

SET(ospray_MODULE_FILES
SET(OSPRAY_MODULE_FILES
osprayConfig.cmake
osprayConfigVersion.cmake
osprayUse.cmake
)

FOREACH(ospray_MODULE_FILENAME ${ospray_MODULE_FILES})
LIST(APPEND ospray_MODULE_INSTALL_FILES
${ospray_MODULE_CONFIG_OUTPUT_DIR}/${ospray_MODULE_FILENAME}
SET(OSPRAY_CMAKECONFIG_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/ospray-${OSPRAY_VERSION}")

## find relative path to make package relocatable
# this is a bit involved to handle these cases:
# - CMAKE_INSTALL_LIBDIR is overridden by the user
# - CMAKE_INSTALL_LIBDIR contains multiple levels for Debian multiarch support
IF (IS_ABSOLUTE "${CMAKE_INSTALL_PREFIX}")
SET(ABS_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
ELSE()
GET_FILENAME_COMPONENT(ABS_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" ABSOLUTE)
ENDIF()

IF (IS_ABSOLUTE "${OSPRAY_CMAKECONFIG_DIR}")
MESSAGE(WARNING "CMAKE_INSTALL_LIBDIR needs to be a relative path!")
SET(ABS_CMAKECONFIG_DIR "${OSPRAY_CMAKECONFIG_DIR}")
ELSE()
SET(ABS_CMAKECONFIG_DIR "${ABS_INSTALL_PREFIX}/${OSPRAY_CMAKECONFIG_DIR}")
ENDIF()

FILE(RELATIVE_PATH OSPRAY_RELATIV_ROOT_DIR "${ABS_CMAKECONFIG_DIR}" "${ABS_INSTALL_PREFIX}" )


FOREACH(MODULE_FILE ${OSPRAY_MODULE_FILES})
LIST(APPEND OSPRAY_MODULE_INSTALL_FILES
${OSPRAY_MODULE_CONFIG_OUTPUT_DIR}/${MODULE_FILE}
)

CONFIGURE_FILE(
${ospray_MODULE_CONFIG_INPUT_DIR}/${ospray_MODULE_FILENAME}.in
${ospray_MODULE_CONFIG_OUTPUT_DIR}/${ospray_MODULE_FILENAME}
${OSPRAY_MODULE_CONFIG_INPUT_DIR}/${MODULE_FILE}.in
${OSPRAY_MODULE_CONFIG_OUTPUT_DIR}/${MODULE_FILE}
@ONLY
)
ENDFOREACH(ospray_MODULE_FILENAME ${ospray_MODULE_FILES})

LIST(APPEND ospray_MODULE_INSTALL_FILES
${CMAKE_SOURCE_DIR}/components/ospcommon/cmake/FindTBB.cmake
)
ENDFOREACH()

INSTALL(FILES
${ospray_MODULE_INSTALL_FILES}
${OSPRAY_MODULE_INSTALL_FILES}
${CMAKE_SOURCE_DIR}/components/ospcommon/cmake/FindTBB.cmake
${CMAKE_SOURCE_DIR}/components/ospcommon/cmake/clang.cmake
${CMAKE_SOURCE_DIR}/components/ospcommon/cmake/icc.cmake
${CMAKE_SOURCE_DIR}/components/ospcommon/cmake/ispc.cmake
${CMAKE_SOURCE_DIR}/components/ospcommon/cmake/gcc.cmake
${CMAKE_SOURCE_DIR}/components/ospcommon/cmake/msvc.cmake
${CMAKE_SOURCE_DIR}/components/ospcommon/cmake/macros.cmake#NOTE(jda) - hack!
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/ospray-${OSPRAY_VERSION}"
${CMAKE_SOURCE_DIR}/cmake/ospray_macros.cmake
DESTINATION ${OSPRAY_CMAKECONFIG_DIR}
COMPONENT devel
)
Loading

0 comments on commit 4907ab0

Please sign in to comment.