# Copyright (c) French Touch Factory. All Rights Reserved.
#
# libk4arecord_v2 : ecriture MKV compatible K4A sans aucune dependance OrbbecSDK.
#
# Reprend telles quelles les sources d'ecriture du wrapper (record.cpp +
# matroska_write.cpp + iocallback.cpp) mais les lie a k4a_shim.cpp au lieu de
# libk4a.so, qui implemente k4a_image_t / k4a_capture_t au-dessus d'OrbbecSDK
# v1.10.18. playback.cpp est volontairement exclu : c'est lui qui appelle
# ob_create_context(), et le recorder n'a pas besoin de relecture.

set(RECORD_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../record)

add_library(k4arecord_v2 SHARED
            ${RECORD_SRC_DIR}/sdk/record.cpp
            ${RECORD_SRC_DIR}/sdk/dll_main.c
            ${RECORD_SRC_DIR}/internal/iocallback.cpp
            ${RECORD_SRC_DIR}/internal/matroska_write.cpp
            k4a_shim.cpp
            )

# k4arecord_EXPORTS : exporte les k4a_record_* (macro de k4arecord_export.h).
# k4a_EXPORTS       : idem pour les k4a_image_* / k4a_capture_* du shim, dont la
#                     visibilite est portee par K4A_EXPORT dans k4a.h.
target_compile_definitions(k4arecord_v2 PRIVATE k4arecord_EXPORTS k4a_EXPORTS)

target_include_directories(k4arecord_v2 PRIVATE
                           ${K4A_INCLUDE_DIR}
                           ${K4A_PRIV_INCLUDE_DIR}
                           ${CMAKE_CURRENT_SOURCE_DIR}/../include
                           # k4arecord/k4arecord_export.h, genere par la cible k4arecord
                           ${CMAKE_BINARY_DIR}/src/orbbec/record/sdk/include
                           )

# Aucun k4a::k4a, aucun OrbbecSDK : c'est tout l'objet de cette cible.
target_link_libraries(k4arecord_v2 PRIVATE
                      k4ainternal::logging
                      ebml::ebml
                      matroska::matroska
                      )

set_target_properties(k4arecord_v2 PROPERTIES
                      LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib
                      )
