set(INC_DIR ${PROJECT_SOURCE_DIR}/include)

add_library(psdr-render-obj OBJECT
    ${INC_DIR}/render/bsdf.h
    ${INC_DIR}/render/camera.h             camera.cpp
    ${INC_DIR}/render/common.h             common.cpp
    ${INC_DIR}/render/emitter.h
    ${INC_DIR}/render/imageblock.h         imageblock.cpp
    ${INC_DIR}/render/integrator.h         integrator.cpp
    ${INC_DIR}/render/intersection.h       intersection.cpp
    ${INC_DIR}/render/medium.h
    ${INC_DIR}/render/phase.h
    ${INC_DIR}/render/photon_map.h
    ${INC_DIR}/render/records.h
    ${INC_DIR}/render/rfilter.h            rfilter.cpp
    ${INC_DIR}/render/scene.h              scene.cpp
    ${INC_DIR}/render/shape.h              shape.cpp
    ${INC_DIR}/render/spiral.h             spiral.cpp
    ${INC_DIR}/render/embree_scene.h       embree_scene.cpp
    ${INC_DIR}/render/volumegrid.h         volumegrid.cpp
)
# include the header files
target_link_libraries(psdr-render-obj
    PUBLIC  psdr-core-obj
            OpenMP::OpenMP_CXX
            igl::core 
            igl::tetgen 
            spdlog 
            tinyobjloader
            fmt::fmt
            pybind11::headers
)
target_compile_options(psdr-render-obj PUBLIC -flto)
add_library(psdr-render SHARED $<TARGET_OBJECTS:psdr-render-obj>)
target_link_libraries(psdr-render PUBLIC psdr-render-obj psdr-core)
target_link_options(psdr-render PUBLIC -flto)