set(QT_USE_QTDBUS 1)
set(QT_USE_QTOPENGL 1)
set(QT_USE_QTSCRIPT 1)
set(QT_USE_QTSVG 1)
set(QT_USE_QTXML 1)

add_definitions(${Qt5Gui_DEFINITIONS})
if(${Qt5Gui_OPENGL_IMPLEMENTATION} STREQUAL "GL")
  find_package(OpenGL REQUIRED)
  set_package_properties(OpenGL PROPERTIES
    DESCRIPTION "the OpenGL library"
                URL ""
                TYPE RUNTIME
                PURPOSE "")
else()
  find_package(OpenGLES REQUIRED)
  set_package_properties(OpenGLES PROPERTIES
    DESCRIPTION "the OpenGLES library"
                URL ""
                TYPE RUNTIME
                PURPOSE "")
endif()

find_package(PkgConfig QUIET)
execute_process(
  COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=mltdatadir mlt-framework
  OUTPUT_VARIABLE MLT_DATADIR
  RESULT_VARIABLE MLT_DATADIR_failed)
if (NOT MLT_DATADIR_failed)
  string(REGEX REPLACE "[\r\n]" "" MLT_DATADIR "${MLT_DATADIR}")
  add_definitions(-DMLT_DATADIR=\"${MLT_DATADIR}\")
endif(NOT MLT_DATADIR_failed)

execute_process(
  COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=meltbin mlt-framework
  OUTPUT_VARIABLE MLT_MELTBIN
  RESULT_VARIABLE MLT_MELTBIN_failed)
if (NOT MLT_MELTBIN_failed)
  string(REGEX REPLACE "[\r\n]" "" MLT_MELTBIN "${MLT_MELTBIN}")
  add_definitions(-DMLT_MELTBIN=\"${MLT_MELTBIN}\")
endif(NOT MLT_MELTBIN_failed)

option(WITH_JogShuttle "Build Jog/Shuttle support" ON)

set(FFMPEG_SUFFIX "" CACHE STRING "FFmpeg custom suffix")
find_package(LibV4L2)
set_package_properties(LibV4L2 PROPERTIES 
                DESCRIPTION "Collection of video4linux support libraries"
                URL "http://freecode.com/projects/libv4l"
                TYPE RUNTIME
                PURPOSE "Required for better webcam support")

if(WITH_JogShuttle)
  check_include_files(linux/input.h HAVE_LINUX_INPUT_H)
  if(HAVE_LINUX_INPUT_H)
    set(BUILD_JogShuttle TRUE)
  endif(HAVE_LINUX_INPUT_H)
endif(WITH_JogShuttle)

set_package_properties(LibV4L2 PROPERTIES 
                DESCRIPTION "Collection of video4linux support libraries"
                URL "http://freecode.com/projects/libv4l"
                TYPE RUNTIME
                PURPOSE "Required for better webcam support")

set_package_properties(OpenGL PROPERTIES
    DESCRIPTION "the OpenGL library"
                URL ""
                TYPE RUNTIME
                PURPOSE "")

set_package_properties(QtScript PROPERTIES
 DESCRIPTION   "Qt module providing core scripting facilities"
                URL "http://qt.nokia.com/products/qt"
                TYPE RUNTIME
                PURPOSE "")

#if(APPLE)
#  macro_log_feature(SDL_FOUND
#    "SDL"
#    "Cross-platform multimedia library"
#    "http://www.libsdl.org"
#    TRUE
#  )
#endif(APPLE)

install(FILES kdenlivesettings.kcfg DESTINATION ${KCFG_INSTALL_DIR})
kconfig_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc)

add_subdirectory(doc)
add_subdirectory(project)
add_subdirectory(timeline)
add_subdirectory(effectstack)
add_subdirectory(dialogs)
add_subdirectory(effectslist)
add_subdirectory(scopes)
add_subdirectory(capture)
add_subdirectory(dvdwizard)
add_subdirectory(lib)
add_subdirectory(monitor)
add_subdirectory(onmonitoritems)
add_subdirectory(simplekeyframes)
add_subdirectory(stopmotion)
add_subdirectory(titler)
add_subdirectory(utils)
add_subdirectory(onmonitoritems/rotoscoping)
add_subdirectory(mltcontroller)
add_subdirectory(bin)
add_subdirectory(qml)
if (Qt5WebKitWidgets_FOUND)
  add_subdirectory(qt-oauth-lib)
endif(Qt5WebKitWidgets_FOUND)
add_subdirectory(library)

list(APPEND kdenlive_SRCS
  colortools.cpp
  definitions.cpp
  gentime.cpp
  doc/kthumb.cpp
  main.cpp
  mainwindow.cpp
  renderer.cpp
  statusbarmessagelabel.cpp
  timecode.cpp
  timecodedisplay.cpp
  layoutmanagement.cpp
  hidetitlebars.cpp
  mltconnection.cpp
  core.cpp
)

ki18n_wrap_ui(kdenlive_UIS
  ui/addtrack_ui.ui
  ui/archivewidget_ui.ui
  ui/audiospectrum_ui.ui
  ui/backupdialog_ui.ui
  ui/bezierspline_ui.ui
  ui/boolval_ui.ui
  ui/clipdurationdialog_ui.ui
  ui/clipproperties_ui.ui
  ui/cliptranscode_ui.ui
  ui/collapsiblewidget_ui.ui
  ui/clipstabilize_ui.ui
  ui/colorclip_ui.ui
  ui/colorplaneexport_ui.ui
  ui/configcapture_ui.ui
  ui/configenv_ui.ui
  ui/configjogshuttle_ui.ui
  ui/configmisc_ui.ui
  ui/configproject_ui.ui
  ui/configsdl_ui.ui
  ui/configtimeline_ui.ui
  ui/configtranscode_ui.ui
  ui/dvdwizardchapters_ui.ui
  ui/dvdwizardmenu_ui.ui
  ui/dvdwizardstatus_ui.ui
  ui/dvdwizardvob_ui.ui
  ui/effectlist_ui.ui
  ui/freesound_ui.ui
  ui/geometryval_ui.ui
  ui/geometrywidget_ui.ui
  ui/histogram_ui.ui
  ui/keyframedialog_ui.ui
  ui/keyframeeditor_ui.ui
  ui/keyframewidget_ui.ui
  ui/listval_ui.ui
  ui/logindialog_ui.ui
  ui/managecaptures_ui.ui
  ui/manageencodingprofile_ui.ui
  ui/markerdialog_ui.ui
  ui/missingclips_ui.ui
  ui/monitoreditwidget_ui.ui
  ui/profiledialog_ui.ui
  ui/projectsettings_ui.ui
  ui/qtextclip_ui.ui
  ui/recmonitor_ui.ui
  ui/renderwidget_ui.ui
  ui/rgbparade_ui.ui
  ui/saveprofile_ui.ui
  ui/slideshowclip_ui.ui
  ui/smconfig_ui.ui
  ui/spacerdialog_ui.ui
  ui/spectrogram_ui.ui
  ui/stopmotion_ui.ui
  ui/templateclip_ui.ui
  ui/timeline_ui.ui
  ui/timelinebuttons_ui.ui
  ui/titlewidget_ui.ui
  ui/trackheader_ui.ui
  ui/tracksconfigdialog_ui.ui
  ui/transitionsettings_ui.ui
  ui/unicodewidget_ui.ui
  ui/urlval_ui.ui
  ui/vectorscope_ui.ui
  ui/waveform_ui.ui
  ui/wipeval_ui.ui
  ui/wizardcapture_ui.ui
  ui/wizardcheck_ui.ui
  ui/wizardextra_ui.ui
  ui/wizardmltcheck_ui.ui
  ui/wizardstandard_ui.ui
  ui/keywordval_ui.ui
  ui/fontval_ui.ui
  ui/cutjobdialog_ui.ui
  ui/scenecutdialog_ui.ui
  ui/gradientedit_ui.ui
  ui/selectivecolor_ui.ui
  ui/clipspeed_ui.ui
)

if(BUILD_JogShuttle)
  list(APPEND kdenlive_SRCS
    jogshuttle/jogmanager.cpp
    jogshuttle/jogaction.cpp
    jogshuttle/jogshuttle.cpp
    jogshuttle/jogshuttleconfig.cpp
  )
endif(BUILD_JogShuttle)

qt5_add_dbus_adaptor(kdenlive_SRCS
  org.kdenlive.MainWindow.xml
  mainwindow.h
  MainWindow
)
qt5_add_resources(kdenlive_SRCS icons.qrc ui/resources.qrc uiresources.qrc)
add_executable(kdenlive
  ${kdenlive_SRCS}
  ${kdenlive_UIS}
)

# To compile kiss_fft.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --std=c99")

# KDE definitions and include directories *must* always come first, Qt follows
# (to avoid breaking builds when KDE and/or Qt are installed to different
# prefixes).

include_directories(
  ${CMAKE_BINARY_DIR}
  ${MLT_INCLUDE_DIR}
  ${MLTPP_INCLUDE_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}/lib/external 
  ${CMAKE_CURRENT_SOURCE_DIR}/lib 
)


# Adds Qt definitions and include directories, and sets QT_LIBRARIES according
# to the components requested in find_package().
#include(${QT_USE_FILE})

target_link_libraries(kdenlive
   KF5::WidgetsAddons
   KF5::Archive
   KF5::CoreAddons
   KF5::KIOCore
   KF5::KIOFileWidgets
   KF5::KIOWidgets
   KF5::NotifyConfig
   KF5::NewStuff
   KF5::DBusAddons
   KF5::XmlGui
   KF5::GuiAddons
   KF5::Notifications
   KF5::TextWidgets
   KF5::IconThemes
   KF5::Crash
  ${Qt5_LIBRARIES}
  Qt5::Svg
  ${OPENGL_LIBRARIES}
  ${OPENGLES_LIBRARIES}
  ${MLT_LIBRARIES}
  ${MLTPP_LIBRARIES}
  ${CMAKE_DL_LIBS}
  ${CMAKE_THREAD_LIBS_INIT}
  kiss_fft
)

message(STATUS "Found MLT++: ${MLTPP_LIBRARIES}")

if (KF5_FILEMETADATA)
  add_definitions(-DKF5_USE_FILEMETADATA)
  target_link_libraries(kdenlive KF5::FileMetaData)
endif()

qt5_use_modules( kdenlive Script Widgets Concurrent Qml Quick)

if (Qt5WebKitWidgets_FOUND)
  message(STATUS "Found Qt5 WebKitWidgets. You can use your Freesound.org credentials to download files")
  add_definitions(-DQT5_USE_WEBKIT)
  target_link_libraries(kdenlive Qt5::WebKitWidgets)
else()
  message(STATUS "Qt5 WebKitWidgets not found. You cannot use your Freesound.org credentials, only preview files can be downloaded from the Online Resources Widget")
endif()


if(Q_WS_X11)
  include_directories(${X11_Xlib_INCLUDE_PATH})
  target_link_libraries(kdenlive ${X11_LIBRARIES})
endif(Q_WS_X11)

if(SDL_FOUND)
  target_link_libraries(kdenlive ${SDL_LIBRARY})
endif(SDL_FOUND)

if(LIBV4L2_FOUND)
  include_directories(${LIBV4L2_INCLUDE_DIR})
  target_link_libraries(kdenlive ${LIBV4L2_LIBRARY})  
  add_definitions(-DUSE_V4L)
endif()

if(BUILD_JogShuttle)
  add_definitions(-DUSE_JOGSHUTTLE)
  target_link_libraries(kdenlive
    media_ctrl
  )
endif()

install(TARGETS kdenlive DESTINATION ${BIN_INSTALL_DIR})
install(FILES kdenliveui.rc DESTINATION ${KXMLGUI_INSTALL_DIR}/kdenlive)

