153 lines
3.7 KiB
CMake
153 lines
3.7 KiB
CMake
cmake_minimum_required (VERSION 3.2)
|
|
project(nori)
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
add_subdirectory(ext ext_build)
|
|
|
|
include_directories(
|
|
# Nori include files
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
# tinyformat string formatting library
|
|
${TFM_INCLUDE_DIR}
|
|
# Eigen linear algebra library
|
|
SYSTEM ${EIGEN_INCLUDE_DIR}
|
|
# OpenEXR high dynamic range bitmap library
|
|
SYSTEM ${OPENEXR_INCLUDE_DIRS}
|
|
# Intel Thread Building Blocks
|
|
SYSTEM ${TBB_INCLUDE_DIR}
|
|
# Pseudorandom number generator
|
|
${PCG32_INCLUDE_DIR}
|
|
# PugiXML parser
|
|
${PUGIXML_INCLUDE_DIR}
|
|
# Helper functions for statistical hypothesis tests
|
|
${HYPOTHESIS_INCLUDE_DIR}
|
|
# GLFW library for OpenGL context creation
|
|
SYSTEM ${GLFW_INCLUDE_DIR}
|
|
# GLEW library for accessing OpenGL functions
|
|
SYSTEM ${GLEW_INCLUDE_DIR}
|
|
# NanoVG drawing library
|
|
SYSTEM ${NANOVG_INCLUDE_DIR}
|
|
# NanoGUI user interface library
|
|
SYSTEM ${NANOGUI_INCLUDE_DIR}
|
|
SYSTEM ${NANOGUI_EXTRA_INCS}
|
|
# Portable filesystem API
|
|
SYSTEM ${FILESYSTEM_INCLUDE_DIR}
|
|
# STB Image Write
|
|
SYSTEM ${STB_IMAGE_WRITE_INCLUDE_DIR}
|
|
)
|
|
|
|
# The following lines build the main executable. If you add a source
|
|
# code file to Nori, be sure to include it in this list.
|
|
add_executable(nori
|
|
|
|
# Header files
|
|
include/nori/bbox.h
|
|
include/nori/bitmap.h
|
|
include/nori/block.h
|
|
include/nori/bsdf.h
|
|
include/nori/accel.h
|
|
include/nori/camera.h
|
|
include/nori/color.h
|
|
include/nori/common.h
|
|
include/nori/dpdf.h
|
|
include/nori/frame.h
|
|
include/nori/integrator.h
|
|
include/nori/emitter.h
|
|
include/nori/mesh.h
|
|
include/nori/object.h
|
|
include/nori/octreenode.h
|
|
include/nori/parser.h
|
|
include/nori/proplist.h
|
|
include/nori/ray.h
|
|
include/nori/rfilter.h
|
|
include/nori/sampler.h
|
|
include/nori/scene.h
|
|
include/nori/timer.h
|
|
include/nori/transform.h
|
|
include/nori/vector.h
|
|
include/nori/warp.h
|
|
|
|
# Source code files
|
|
src/bitmap.cpp
|
|
src/block.cpp
|
|
src/accel.cpp
|
|
src/chi2test.cpp
|
|
src/common.cpp
|
|
src/diffuse.cpp
|
|
src/gui.cpp
|
|
src/independent.cpp
|
|
src/main.cpp
|
|
src/mesh.cpp
|
|
src/obj.cpp
|
|
src/object.cpp
|
|
src/octreenode.cpp
|
|
src/parser.cpp
|
|
src/perspective.cpp
|
|
src/proplist.cpp
|
|
src/rfilter.cpp
|
|
src/scene.cpp
|
|
src/ttest.cpp
|
|
src/warp.cpp
|
|
src/microfacet.cpp
|
|
src/mirror.cpp
|
|
src/dielectric.cpp
|
|
|
|
# Custom Source code files
|
|
src/normals.cpp
|
|
src/simple.cpp
|
|
src/ao.cpp
|
|
src/area.cpp
|
|
src/infinite_area.cpp
|
|
src/whitted.cpp
|
|
src/disney.cpp
|
|
src/path_mats.cpp
|
|
src/path_ems.cpp
|
|
src/path_mis.cpp
|
|
include/nori/mipmap.h
|
|
src/mipmap.cpp
|
|
include/nori/texture.h
|
|
src/EXRtexture.cpp
|
|
)
|
|
|
|
add_definitions(${NANOGUI_EXTRA_DEFS})
|
|
|
|
# The following lines build the warping test application
|
|
add_executable(warptest
|
|
include/nori/warp.h
|
|
src/warp.cpp
|
|
src/warptest.cpp
|
|
src/microfacet.cpp
|
|
src/object.cpp
|
|
src/proplist.cpp
|
|
src/common.cpp
|
|
|
|
# Custom Source code files
|
|
src/bitmap.cpp
|
|
include/nori/mipmap.h
|
|
src/mipmap.cpp
|
|
include/nori/bitmap.h
|
|
)
|
|
|
|
if (WIN32)
|
|
target_link_libraries(nori tbb_static pugixml IlmImf nanogui ${NANOGUI_EXTRA_LIBS} zlibstatic)
|
|
else()
|
|
target_link_libraries(nori tbb_static pugixml IlmImf nanogui ${NANOGUI_EXTRA_LIBS})
|
|
endif()
|
|
|
|
target_link_libraries(warptest tbb_static IlmImf nanogui ${NANOGUI_EXTRA_LIBS})
|
|
|
|
# Force colored output for the ninja generator
|
|
if (CMAKE_GENERATOR STREQUAL "Ninja")
|
|
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcolor-diagnostics")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics")
|
|
elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=always")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always")
|
|
endif()
|
|
endif()
|
|
|
|
target_compile_features(warptest PRIVATE cxx_std_17)
|
|
target_compile_features(nori PRIVATE cxx_std_17)
|
|
|
|
# vim: set et ts=2 sw=2 ft=cmake nospell:
|