set(INC_DIR ${PROJECT_SOURCE_DIR}/include)

add_library(psdr-core-obj OBJECT
    ${INC_DIR}/config.h
    ${INC_DIR}/core/aabb.h
    ${INC_DIR}/core/frame.h
    ${INC_DIR}/core/fwd.h
    ${INC_DIR}/core/line_clip.h
    ${INC_DIR}/core/logger.h            logger.cpp
    ${INC_DIR}/core/macro.h
    ${INC_DIR}/core/math_func.h        math_func.cpp
    ${INC_DIR}/core/nanoflann.hpp
    ${INC_DIR}/core/object.h
    ${INC_DIR}/core/pmf.h
    ${INC_DIR}/core/ptr.h
    ${INC_DIR}/core/ray.h
    ${INC_DIR}/core/sampler.h          sampler.cpp
    ${INC_DIR}/core/spectrum.h
    ${INC_DIR}/core/stats.h            stats.cpp
    ${INC_DIR}/core/timer.h
    ${INC_DIR}/core/transform.h
    ${INC_DIR}/core/utils.h            utils.cpp
    ${INC_DIR}/core/miniz.h            miniz.cpp
    ${INC_DIR}/core/tinyexr.h    
    ${INC_DIR}/core/statistics.h       statistics.cpp     
    ${INC_DIR}/core/properties.h       properties.cpp 
    ${INC_DIR}/core/stream.h           stream.cpp
    ${INC_DIR}/core/fstream.h          fstream.cpp
    ${INC_DIR}/core/cube_distrb.h      cube_distrb.cpp
    ${INC_DIR}/core/bitmap.h           bitmap.cpp
)
target_link_libraries(psdr-core-obj
    PUBLIC  spdlog)
target_compile_options(psdr-core-obj PUBLIC -flto)
add_library(psdr-core SHARED $<TARGET_OBJECTS:psdr-core-obj>)
# embed bitcode during linking. https://reviews.llvm.org/D68213?id=233652
target_link_options(psdr-core PUBLIC -flto)