
add_definitions(${MEDIASCANNER_DEPS_CFLAGS} ${GST_CFLAGS} ${EXIF_CFLAGS} ${PIXBUF_CFLAGS} ${TAGLIB_CFLAGS})
include_directories(.. ${CMAKE_CURRENT_BINARY_DIR})

# Build stubs/skeletons for D-Bus interface
find_program(gdbus_codegen gdbus-codegen)
if(NOT gdbus_codegen)
  msg(FATAL_ERROR "Could not locate gdbus-codegen")
endif()

add_custom_command(
  OUTPUT dbus-generated.c dbus-generated.h
  COMMAND ${gdbus_codegen} --interface-prefix=com.lomiri.MediaScanner2 --generate-c-code dbus-generated --c-namespace MS ${CMAKE_CURRENT_SOURCE_DIR}/dbus-interface.xml
  MAIN_DEPENDENCY dbus-interface.xml
  )
# Code generated by gdbus-codegen doesn't like all the warning flags
# we have turned on.
set_property(SOURCE dbus-generated.c APPEND_STRING PROPERTY
  COMPILE_FLAGS " -Wno-unused-parameter -Wno-pedantic")

# The client code for the extractor daemon
add_library(extractor-client STATIC
  MetadataExtractor.cc
  dbus-generated.c
  dbus-marshal.cc
  ../mediascanner/utils.cc
)
target_link_libraries(extractor-client
  mediascanner
)

# The backend code for the extractor daemon, as a library for use by tests
add_library(extractor-backend STATIC
  ExtractorBackend.cc
  GStreamerExtractor.cc
  ImageExtractor.cc
  TaglibExtractor.cc
)
target_compile_definitions(extractor-backend
  PRIVATE G_LOG_DOMAIN="mediascanner-extractor")
target_link_libraries(extractor-backend
  extractor-client
  ${GST_LDFLAGS}
  ${EXIF_LDFLAGS}
  ${PIXBUF_LDFLAGS}
  ${TAGLIB_LDFLAGS}
)

add_executable(mediascanner-extractor
  main.cc
)
target_link_libraries(mediascanner-extractor extractor-backend)
target_compile_definitions(mediascanner-extractor
  PRIVATE G_LOG_DOMAIN="mediascanner-extractor")

install(
  TARGETS mediascanner-extractor
  RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/mediascanner-2.0
)

configure_file(
  com.lomiri.MediaScanner2.Extractor.service.in
  com.lomiri.MediaScanner2.Extractor.service)
install(
  FILES ${CMAKE_CURRENT_BINARY_DIR}/com.lomiri.MediaScanner2.Extractor.service
  DESTINATION ${CMAKE_INSTALL_DATADIR}/dbus-1/services
)
