241 lines
7 KiB
CMake
241 lines
7 KiB
CMake
## Copyright 2009-2021 Intel Corporation
|
|
## SPDX-License-Identifier: Apache-2.0
|
|
|
|
## Global settings ##
|
|
|
|
cmake_minimum_required(VERSION 3.1)
|
|
|
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/dependencies)
|
|
|
|
if(NOT CMAKE_INSTALL_PREFIX)
|
|
set(CMAKE_INSTALL_PREFIX
|
|
"${CMAKE_BINARY_DIR}/install"
|
|
CACHE STRING "Final install location." FORCE)
|
|
endif()
|
|
|
|
if (NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE Release)
|
|
endif()
|
|
|
|
## Establish project ##
|
|
|
|
project(OSPRay_superbuild)
|
|
|
|
include(ExternalProject)
|
|
include(GNUInstallDirs)
|
|
include(ProcessorCount)
|
|
|
|
## Superbuild options ##
|
|
|
|
set(BUILD_RKCOMMON_VERSION "v1.6.0" CACHE STRING "Which version of rkcommon to build?")
|
|
set(TBB_VERSION "2021.2.0" CACHE STRING "Which version of TBB to download?")
|
|
set(BUILD_OPENVKL_VERSION "v0.12.1" CACHE STRING "Which version of OpenVKL to build?")
|
|
|
|
set(installDir ${CMAKE_INSTALL_PREFIX})
|
|
get_filename_component(INSTALL_DIR_ABSOLUTE ${installDir} ABSOLUTE BASE_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
ProcessorCount(PROCESSOR_COUNT)
|
|
if(NOT PROCESSOR_COUNT EQUAL 0)
|
|
SET(PROCESSOR_COUNT 1)
|
|
endif()
|
|
|
|
if (${CMAKE_VERSION} VERSION_GREATER 3.11.4)
|
|
set(PARALLEL_JOBS_OPTS -j ${BUILD_JOBS})
|
|
endif()
|
|
|
|
set(DEFAULT_BUILD_COMMAND cmake --build . --config release ${PARALLEL_JOBS_OPTS})
|
|
|
|
set(COMPONENT_PATH ${INSTALL_DIR_ABSOLUTE}) # install all components in one directory
|
|
list(APPEND CMAKE_PREFIX_PATH ${COMPONENT_PATH})
|
|
string(REPLACE ";" "|" CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH}")
|
|
|
|
set(ISPC_VERSION "v1.15.0")
|
|
set(ISPC_BASE_URL "https://github.com/ispc/ispc/releases/download")
|
|
if (APPLE)
|
|
set(ISPC_URL ${ISPC_BASE_URL}/${ISPC_VERSION}/ispc-${ISPC_VERSION}-macOS.tar.gz)
|
|
elseif(WIN32)
|
|
set(ISPC_URL ${ISPC_BASE_URL}/${ISPC_VERSION}/ispc-${ISPC_VERSION}-windows.zip)
|
|
else()
|
|
set(ISPC_URL ${ISPC_BASE_URL}/${ISPC_VERSION}/ispc-${ISPC_VERSION}-linux.tar.gz)
|
|
endif()
|
|
|
|
ExternalProject_Add(ispc
|
|
PREFIX ispc
|
|
STAMP_DIR ispc/stamp
|
|
SOURCE_DIR ispc/src
|
|
BINARY_DIR ispc
|
|
URL ${ISPC_URL}
|
|
DOWNLOAD_NO_PROGRESS ON
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND ""
|
|
INSTALL_COMMAND "${CMAKE_COMMAND}" -E copy_if_different
|
|
<SOURCE_DIR>/bin/ispc${CMAKE_EXECUTABLE_SUFFIX}
|
|
${COMPONENT_PATH}/bin/ispc${CMAKE_EXECUTABLE_SUFFIX}
|
|
BUILD_ALWAYS OFF
|
|
)
|
|
|
|
set(ISPC_PATH "${COMPONENT_PATH}/bin/ispc${CMAKE_EXECUTABLE_SUFFIX}")
|
|
|
|
if (APPLE)
|
|
set(TBB_URL "http://github.com/intel/tbb/releases/download/v${TBB_VERSION}/oneapi-tbb-${TBB_VERSION}-mac.tgz")
|
|
elseif (WIN32)
|
|
set(TBB_URL "http://github.com/intel/tbb/releases/download/v${TBB_VERSION}/oneapi-tbb-${TBB_VERSION}-win.zip")
|
|
else()
|
|
set(TBB_URL "http://github.com/intel/tbb/releases/download/v${TBB_VERSION}/oneapi-tbb-${TBB_VERSION}-lin.tgz")
|
|
endif()
|
|
|
|
ExternalProject_Add(tbb
|
|
PREFIX tbb
|
|
DOWNLOAD_DIR tbb
|
|
STAMP_DIR tbb/stamp
|
|
SOURCE_DIR tbb/src
|
|
BINARY_DIR tbb
|
|
URL ${TBB_URL}
|
|
DOWNLOAD_NO_PROGRESS ON
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND ""
|
|
INSTALL_COMMAND "${CMAKE_COMMAND}" -E copy_directory
|
|
<SOURCE_DIR>
|
|
${COMPONENT_PATH}
|
|
BUILD_ALWAYS OFF
|
|
)
|
|
|
|
set(TBB_PATH "${COMPONENT_PATH}")
|
|
|
|
ExternalProject_Add(rkcommon
|
|
PREFIX rkcommon
|
|
DOWNLOAD_DIR rkcommon
|
|
STAMP_DIR rkcommon/stamp
|
|
SOURCE_DIR rkcommon/src
|
|
BINARY_DIR rkcommon/build
|
|
URL "http://github.com/ospray/rkcommon/archive/${BUILD_RKCOMMON_VERSION}.zip"
|
|
DOWNLOAD_NO_PROGRESS ON
|
|
CMAKE_ARGS
|
|
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
-DCMAKE_INSTALL_PREFIX:PATH=${COMPONENT_PATH}
|
|
-DCMAKE_INSTALL_INCLUDEDIR=${CMAKE_INSTALL_INCLUDEDIR}
|
|
-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
|
|
-DCMAKE_INSTALL_DOCDIR=${CMAKE_INSTALL_DOCDIR}
|
|
-DCMAKE_INSTALL_BINDIR=${CMAKE_INSTALL_BINDIR}
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
-DINSTALL_DEPS=OFF
|
|
-DBUILD_TESTING=OFF
|
|
-DRKCOMMON_TBB_ROOT=${TBB_PATH}
|
|
BUILD_COMMAND ${DEFAULT_BUILD_COMMAND}
|
|
BUILD_ALWAYS ${ALWAYS_REBUILD}
|
|
)
|
|
|
|
ExternalProject_Add_StepDependencies(rkcommon configure tbb)
|
|
|
|
ExternalProject_Add(embree
|
|
PREFIX embree
|
|
SOURCE_DIR ${INSTALL_DIR_ABSOLUTE}/../../embree
|
|
STAMP_DIR embree/stamp
|
|
BINARY_DIR embree
|
|
URL ${EMBREE_URL}
|
|
DOWNLOAD_NO_PROGRESS ON
|
|
CONFIGURE_COMMAND ""
|
|
BUILD_COMMAND ""
|
|
INSTALL_COMMAND "${CMAKE_COMMAND}" -E copy_directory
|
|
<SOURCE_DIR>/
|
|
${COMPONENT_PATH}
|
|
BUILD_ALWAYS OFF
|
|
)
|
|
|
|
ExternalProject_Add(openvkl
|
|
PREFIX openvkl
|
|
DOWNLOAD_DIR openvkl
|
|
STAMP_DIR openvkl/stamp
|
|
SOURCE_DIR openvkl/src
|
|
BINARY_DIR openvkl/build
|
|
LIST_SEPARATOR | # Use the alternate list separator
|
|
URL "http://github.com/openvkl/openvkl/archive/${BUILD_OPENVKL_VERSION}.zip"
|
|
DOWNLOAD_NO_PROGRESS ON
|
|
CMAKE_ARGS
|
|
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
|
|
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
-DCMAKE_INSTALL_PREFIX:PATH=${COMPONENT_PATH}
|
|
-DCMAKE_INSTALL_INCLUDEDIR=${CMAKE_INSTALL_INCLUDEDIR}
|
|
-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
|
|
-DCMAKE_INSTALL_DOCDIR=${CMAKE_INSTALL_DOCDIR}
|
|
-DCMAKE_INSTALL_BINDIR=${CMAKE_INSTALL_BINDIR}
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
-DRKCOMMON_TBB_ROOT=${TBB_PATH}
|
|
-DISPC_EXECUTABLE=${ISPC_PATH}
|
|
-DBUILD_BENCHMARKS=OFF
|
|
-DBUILD_EXAMPLES=OFF
|
|
-DBUILD_TESTING=OFF
|
|
BUILD_COMMAND ${DEFAULT_BUILD_COMMAND}
|
|
BUILD_ALWAYS ${ALWAYS_REBUILD}
|
|
)
|
|
|
|
ExternalProject_Add_StepDependencies(openvkl
|
|
configure
|
|
rkcommon
|
|
embree
|
|
ispc
|
|
)
|
|
|
|
ExternalProject_Add(glfw
|
|
PREFIX glfw
|
|
DOWNLOAD_DIR glfw
|
|
STAMP_DIR glfw/stamp
|
|
SOURCE_DIR glfw/src
|
|
BINARY_DIR glfw/build
|
|
URL "http://github.com/glfw/glfw/releases/download/3.2.1/glfw-3.2.1.zip"
|
|
DOWNLOAD_NO_PROGRESS ON
|
|
CMAKE_ARGS
|
|
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
-DCMAKE_INSTALL_PREFIX:PATH=${COMPONENT_PATH}
|
|
-DCMAKE_INSTALL_INCLUDEDIR=${CMAKE_INSTALL_INCLUDEDIR}
|
|
-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
|
|
-DCMAKE_INSTALL_DOCDIR=${CMAKE_INSTALL_DOCDIR}
|
|
-DCMAKE_INSTALL_BINDIR=${CMAKE_INSTALL_BINDIR}
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
-DGLFW_BUILD_DOCS=OFF
|
|
-DGLFW_BUILD_EXAMPLES=OFF
|
|
-DGLFW_BUILD_TESTS=OFF
|
|
BUILD_COMMAND ${DEFAULT_BUILD_COMMAND}
|
|
BUILD_ALWAYS ${ALWAYS_REBUILD}
|
|
)
|
|
|
|
ExternalProject_Add(ospray
|
|
PREFIX ospray
|
|
URL "https://github.com/ospray/ospray/archive/v2.5.0.tar.gz"
|
|
DOWNLOAD_NO_PROGRESS ON
|
|
GIT_SUBMODULES ""
|
|
STAMP_DIR ospray/stamp
|
|
BINARY_DIR ospray/build
|
|
LIST_SEPARATOR | # Use the alternate list separator
|
|
CMAKE_ARGS
|
|
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
|
|
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
|
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
-DCMAKE_INSTALL_PREFIX:PATH=${COMPONENT_PATH}
|
|
-DCMAKE_INSTALL_INCLUDEDIR=${CMAKE_INSTALL_INCLUDEDIR}
|
|
-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
|
|
-DCMAKE_INSTALL_DOCDIR=${CMAKE_INSTALL_DOCDIR}
|
|
-DCMAKE_INSTALL_BINDIR=${CMAKE_INSTALL_BINDIR}
|
|
-DOSPRAY_BUILD_ISA=ALL
|
|
-DOSPRAY_ENABLE_TESTING=ON
|
|
-DOSPRAY_MODULE_MULTIHIT=OFF
|
|
-DOSPRAY_MODULE_BILINEAR_PATCH=ON
|
|
-DOSPRAY_MODULE_DENOISER=OFF
|
|
-DOSPRAY_STRICT_BUILD=ON
|
|
-DOSPRAY_WARN_AS_ERRORS=OFF
|
|
-DISPC_EXECUTABLE=${ISPC_PATH}
|
|
-DRKCOMMON_TBB_ROOT=${TBB_PATH}
|
|
BUILD_COMMAND ${DEFAULT_BUILD_COMMAND}
|
|
BUILD_ALWAYS OFF
|
|
)
|
|
|
|
ExternalProject_Add_StepDependencies(ospray
|
|
configure
|
|
rkcommon
|
|
embree
|
|
openvkl
|
|
glfw
|
|
ispc
|
|
)
|