find_package(PkgConfig REQUIRED)
pkg_check_modules(DBUS REQUIRED dbus-1)
set(BIN_NAME displayjack-clipboard)
set(CLIPBOARD_INCLUDE ${CMAKE_SOURCE_DIR}/include/clipboard)

find_package(Qt5Core)
find_package(Qt5Gui)

set(CMAKE_AUTOMOC ON) # Meta-Object Compiler
set(CMAKE_AUTORCC ON) # Resource Compiler
set(CMAKE_AUTOUIC ON) # User Interface Compiler

include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CLIPBOARD_INCLUDE})
include_directories(${COMMON_PATH})
include_directories(${DBUS_INCLUDE_DIRS})

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread")  #设置c++的编译选项
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")  #设置c的编译选项


set(CLIPBOARD_LIB_SRCS
    datamanage/clipdataproperty.h
    datamanage/clipdataproperty.cpp
    datamanage/clipdatarecord.h
    datamanage/clipdatarecord.cpp
    datamanage/clipdata.h
    datamanage/clipdata.cpp
    xwl/xwlclipboard.cpp
    xwl/xwldatabridge.cpp
    xwl/xwlprimary.cpp
    xwl/xwlselection.cpp
    xwl/xwlsource.cpp
    xwl/xwlutils.cpp
    xwl/xwlproperty.cpp
    xwl/timer.cpp
    systemclipboard.h
    systemclipboard.cpp
    displayjack_clipboard.cpp
    ${CLIPBOARD_INCLUDE}/displayjack_clipboard.h
    imageprocess.h
    imageprocess.cpp
    clipboarddataprocess.h
    clipboarddataprocess.cpp
    waylandclipboard.h
    waylandclipboard.cpp
    x11clipboard.h
    x11clipboard.cpp
    waylandclipboardprotocol.c
    waylandclipboardprotocol.h
    ${COMMON_PATH}/log.c
    ${COMMON_PATH}/log.h
    ${CMAKE_CURRENT_BINARY_DIR}/wayland-wlr-data-control-unstable-v1-client-protocol.h
    )
ecm_add_wayland_client_protocol(CLIPBOARD_LIB_SRCS
    PROTOCOL ${PROTOCOLS_PATH}/wlr-data-control-unstable-v1.xml
    BASENAME wlr-data-control-unstable-v1
)
# ecm_add_wayland_client_protocol(CLIPBOARD_LIB_SRCS
#     PROTOCOL ${PROTOCOLS_PATH}/client-management.xml
#     BASENAME client-management
# )

set(CLIPBOARD_LIB_HEADERS
    ${CLIPBOARD_INCLUDE}/displayjack_clipboard.h
    ${CLIPBOARD_INCLUDE}/displayjack_clipboardstruct.h
    )

add_library(${BIN_NAME} SHARED
    ${CLIPBOARD_LIB_SRCS}
    ${CLIPBOARD_LIB_HEADERS}
)
target_link_libraries(${BIN_NAME} PUBLIC Qt5::Core Qt5::Gui ssl crypto xcb xcb-xfixes)

target_link_libraries(${BIN_NAME} PRIVATE Wayland::Client ${DBUS_LIBRARIES})

set_target_properties(${BIN_NAME} PROPERTIES
    VERSION ${CMAKE_PROJECT_VERSION}
    SOVERSION ${CMAKE_PROJECT_VERSION_MAJOR})

target_compile_definitions(${BIN_NAME} PRIVATE VERSION="${CMAKE_PROJECT_VERSION}")

install(FILES ${CLIPBOARD_LIB_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${BIN_NAME})
install(TARGETS ${BIN_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})

# for pc file config
set(PC_REQ_PRIVATE)
set(PC_REQ_PUBLIC)

# config pkgconfig file
configure_file(pkg/${BIN_NAME}.pc.in ${BIN_NAME}.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
# config cmake file
configure_file(pkg/${BIN_NAME}Config.cmake.in ${BIN_NAME}Config.cmake @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BIN_NAME}Config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BIN_NAME})

# config qmake moudule file
set(DTK_MODULE ${BIN_NAME})
