#################################################
#
#  (C) 2017 Slávek Banko
#  slavek (DOT) banko (AT) axis.cz
#
#  Improvements and feedback are welcome
#
#  This file is released under GPL >= 2
#
#################################################

add_subdirectory( mcopclass )

include_directories(
  ${CMAKE_CURRENT_BINARY_DIR}
  ${CMAKE_BINARY_DIR}/arts/runtime
  ${CMAKE_BINARY_DIR}
  ${ARTS_INCLUDE_DIRS}
  ${TQT_INCLUDE_DIRS}
  ${TDE_INCLUDE_DIR}
)

link_directories(
  ${TQT_LIBRARY_DIRS}
  ${ARTS_LIBRARY_DIRS}
)


##### artsmidi (library) ########################

tde_add_library( artsmidi_idl SHARED
  SOURCES artsmidi.cc
  VERSION 0.0.0
  LINK ${ARTS_LIBRARIES} ${GLIB2_LIBRARIES} ${GTHREAD2_LIBRARIES} mcop artsflow artsflow_idl
  DESTINATION ${LIB_INSTALL_DIR}
)

tde_add_library( artsmidi SHARED
  SOURCES
    midimanager_impl.cc midiclient_impl.cc
    miditest_impl.cc midimanagerport_impl.cc rawmidiport_impl.cc
    systemmiditimer_impl.cc audiomiditimer_impl.cc miditimercommon.cc
    audiosync_impl.cc audiotimer.cc alsamidigateway_impl.cc
    alsamidiport_impl.cc midisyncgroup_impl.cc timestampmath.cc
  VERSION 0.0.0
  LINK
    artsmidi_idl-shared
  DESTINATION ${LIB_INSTALL_DIR}
)

add_custom_command(
  OUTPUT
    artsmidi.cc artsmidi.h
    artsmidi.mcopclass artsmidi.mcoptype
  COMMAND ${ARTS_MCOPIDL_EXECUTABLE} -t
    -I${ARTS_INCLUDEDIR} ${CMAKE_CURRENT_SOURCE_DIR}/artsmidi.idl
  DEPENDS artsmidi.idl
)


##### midisend (executable) #####################

tde_add_executable( midisend
  SOURCES midisend.cc midimsg.c
  LINK artsmidi_idl-shared
  DESTINATION ${BIN_INSTALL_DIR}
)

tde_add_check_executable( midisynctest
  SOURCES midisynctest.cc
  LINK artsmidi-shared soundserver_idl
)


##### other data ################################

install(
  FILES
    artsmidi.idl
    ${CMAKE_CURRENT_BINARY_DIR}/artsmidi.h
  DESTINATION ${INCLUDE_INSTALL_DIR}/arts
)

install(
  FILES
    ${CMAKE_CURRENT_BINARY_DIR}/artsmidi.mcoptype
    ${CMAKE_CURRENT_BINARY_DIR}/artsmidi.mcopclass
  DESTINATION ${LIB_INSTALL_DIR}/mcop
)
