include_directories(
  ${MIRCOMMON_INCLUDE_DIRS}
  ${MIRSERVER_INCLUDE_DIRS}
  ${UBUNTU_PLATFORM_API_INCLUDE_DIRS}
  ${PROTOBUF_INCLUDE_DIRS}
  ${CMAKE_CURRENT_BINARY_DIR}
)

protobuf_generate_cpp(
  GENERATED_PROTOBUF_SRCS GENERATED_PROTOBUF_HDRS
  unityrpc.proto
)

set(
  UNITY_MIR_HEADERS

  displayconfigurationpolicy.h
  initialsurfaceplacementstrategy.h
  qmirserverapplication.h
  qmirserver.h
  messageprocessor.h
  sessionauthorizer.h
  sessioncreator.h
  sessionlistener.h
  shellserverconfiguration.h
  surfaceconfigurator.h
  unityprotobufservice.h
  logging.h
  focussetter.h
  serverstatuslistener.h
  ${GENERATED_PROTOBUF_HDRS}
)

add_library(
  unity-mir SHARED

  displayconfigurationpolicy.cpp
  initialsurfaceplacementstrategy.cpp
  qmirserverapplication.cpp
  qmirserver.cpp
  messageprocessor.cpp
  sessionauthorizer.cpp
  sessioncreator.cpp
  sessionlistener.cpp
  shellserverconfiguration.cpp
  surfaceconfigurator.cpp
  unityprotobufservice.cpp
  focussetter.cpp
  serverstatuslistener.cpp

  ${UNITY_MIR_HEADERS}
  ${GENERATED_PROTOBUF_SRCS}
)

# We should not need this line according to the Qt5/CMake docs.
# However, when removing it, include paths are not set and linking to Qt5 fails.
qt5_use_modules(unity-mir Core Quick)

set_target_properties(
  unity-mir

  PROPERTIES
  VERSION ${UNITY_MIR_VERSION_MAJOR}.${UNITY_MIR_VERSION_MINOR}.${UNITY_MIR_VERSION_PATCH}
  SOVERSION ${UNITY_MIR_VERSION_MAJOR})

target_link_libraries(
  unity-mir

  Qt5::Core
  Qt5::Quick

  ${CMAKE_THREAD_LIBS_INIT}
  ${UBUNTU_PLATFORM_API_LDFLAGS}
  ${MIRSERVER_LDFLAGS}
  ${PROTOBUF_LIBRARIES}
  ${Boost_SYSTEM_LIBRARY_RELEASE}

  ubuntu_application_api_mirserver)

install(
  TARGETS unity-mir
  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

install(
  FILES ${UNITY_MIR_HEADERS}
  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/unity-mir)
