cmake_minimum_required (VERSION 3.5)

project(meson_display_wrapper)

set(WRAPPER_SRC
    drm-backend/DrmFramebuffer.cpp
    drm-backend/DrmBo.cpp
    drm-backend/DrmVideoBo.cpp
    drm-backend/DrmConnector.cpp
    drm-backend/DrmCrtc.cpp
    drm-backend/DrmPlane.cpp
    drm-backend/DrmVideoPlane.cpp
    drm-backend/DrmEncoder.cpp
    drm-backend/DrmDevice.cpp
    wrapper/MesonOutputLayer.cpp
    wrapper/MesonHwPlane.cpp
    wrapper/MesonHwCrtc.cpp
    wrapper/MesonHwConnector.cpp
    wrapper/MesonDisplayDevice.cpp
    wrapper/MesonDisplay.cpp
    wrapper/MesonComposer.cpp
    wrapper/MesonCompositionStrategy.cpp
    wrapper/MesonVsync.cpp
    wrapper/MesonProcessorsManager.cpp
    video_tunnel_display/TunnelLayer.cpp
    video_tunnel_display/VtDisplayThread.cpp
)

add_definitions(-DLINUX_COMPILE)

add_library(meson_display_wrapper SHARED ${WRAPPER_SRC})

target_link_libraries(meson_display_wrapper
    PRIVATE
    meson_display_common
    meson_display_composition
    meson_display_postprocessor
    bsd
    )

target_link_libraries(meson_display_wrapper PUBLIC ${LIBDRM_LIBRARIES} videotunnel)

target_include_directories(meson_display_wrapper PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/drm-backend/include
    )

target_include_directories(meson_display_wrapper PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/drm-backend/include
    ${CMAKE_CURRENT_SOURCE_DIR}/wrapper/include
    ${CMAKE_CURRENT_SOURCE_DIR}/video_tunnel_display/include)

find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBDRM REQUIRED libdrm)

target_compile_options(meson_display_wrapper PUBLIC ${LIBDRM_CFLAGS_OTHER})

set_target_properties(meson_display_wrapper PROPERTIES SOVERSION 1 VERSION 1.0.0)

install(TARGETS meson_display_wrapper LIBRARY DESTINATION ${LIB_DIR})

install(DIRECTORY
    drm-backend/include/
    wrapper/include/
    video_tunnel_display/include/
    DESTINATION ${INCLUDE_DIR})
