Warning, /multimedia/subtitlecomposer/src/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 if(NOT CMAKE_BUILD_TYPE)
0002         message(STATUS "No build type selected, default to Release")
0003         set(CMAKE_BUILD_TYPE "Release")
0004 endif()
0005 
0006 if(CMAKE_COMPILER_IS_GNUCC)
0007         message(STATUS "GNU C compiler detected")
0008         set(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Og -g")
0009         set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Og -g")
0010         set(CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O3")
0011         set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O3")
0012         set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELEASE} -Wall -O3 -g")
0013         set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O3 -g")
0014 endif()
0015 
0016 ecm_setup_version(${PROJECT_VERSION}
0017         VARIABLE_PREFIX SUBTITLECOMPOSER
0018         SOVERSION ${PROJECT_VERSION_MAJOR}
0019         VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/config-subtitlecomposer.h"
0020 )
0021 
0022 add_definitions(-D_DEFAULT_SOURCE)
0023 if(APPIMAGE)
0024         message(STATUS "AppImage build enabled")
0025         set(SC_APPIMAGE 1 CACHE INTERNAL EXPORTEDVARIABLE)
0026 endif()
0027 
0028 find_package(FFmpeg 57.83.100 REQUIRED)
0029 find_package(OpenAL REQUIRED)
0030 find_package(ICU)
0031 
0032 set(SC_PLUGIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${KDE_INSTALL_LIBDIR}/subtitlecomposer" CACHE STRING EXPORTEDVARIABLE)
0033 message(STATUS "Subtitle Composer plugin path: ${SC_PLUGIN_INSTALL_DIR}")
0034 
0035 include_directories(
0036         ${CMAKE_CURRENT_SOURCE_DIR} # so that we can refer to our files starting at src dir
0037         ${CMAKE_CURRENT_SOURCE_DIR}/widgets # needed for .ui files to access custom widgets
0038 )
0039 
0040 set(subtitlecomposer_SRCS
0041         #[[ main ]] application.cpp appglobal.cpp application_actions.cpp application_errorcheck.cpp application_subtitle.cpp mainwindow.cpp
0042         #[[ actions ]] actions/useraction.cpp actions/useractionnames.h actions/kcodecactionext.cpp actions/krecentfilesactionext.cpp
0043         #[[ configs ]] configs/configdialog.cpp configs/errorsconfigwidget.cpp configs/generalconfigwidget.cpp configs/playerconfigwidget.cpp configs/waveformconfigwidget.cpp
0044         #[[ core ]] core/formatdata.h core/range.h core/rangelist.h core/time.cpp core/richstring.cpp
0045         core/subtitle.cpp core/subtitleiterator.cpp core/subtitleline.cpp
0046         #[[ core/richtext ]] core/richtext/richdocument.cpp core/richtext/richdocumenteditor.cpp core/richtext/richdocumentlayout.cpp core/richtext/richcss.cpp
0047         core/richtext/richdom.cpp
0048         #[[ core/undo ]] core/undo/subtitleactions.cpp core/undo/subtitlelineactions.cpp core/undo/undoaction.cpp core/undo/undostack.cpp
0049         #[[ dialogs ]] dialogs/actiondialog.cpp #[[dialogs/actionwitherrortargetsdialog.cpp]] dialogs/actionwithtargetdialog.cpp
0050         dialogs/adjusttimesdialog.cpp dialogs/autodurationsdialog.cpp dialogs/changeframeratedialog.cpp dialogs/changetextscasedialog.cpp
0051         dialogs/durationlimitsdialog.cpp dialogs/encodingdetectdialog.cpp dialogs/fixoverlappingtimesdialog.cpp dialogs/fixpunctuationdialog.cpp
0052         dialogs/insertlinedialog.cpp dialogs/intinputdialog.cpp dialogs/joinsubtitlesdialog.cpp dialogs/progressdialog.cpp
0053         dialogs/removelinesdialog.cpp dialogs/selectablesubtitledialog.cpp dialogs/shifttimesdialog.cpp dialogs/smarttextsadjustdialog.cpp
0054         dialogs/splitsubtitledialog.cpp dialogs/subtitleclassdialog.cpp dialogs/subtitlecolordialog.cpp dialogs/subtitlevoicedialog.cpp
0055         dialogs/syncsubtitlesdialog.cpp dialogs/textinputdialog.cpp
0056         #[[ errors ]] errors/errorfinder.cpp errors/errortracker.cpp errors/finderrorsdialog.cpp
0057         #[[ formats ]] formats/format.h formats/formatmanager.h formats/inputformat.h formats/outputformat.h formats/formatmanager.cpp
0058         formats/microdvd/microdvdinputformat.h formats/microdvd/microdvdoutputformat.h
0059         formats/mplayer/mplayerinputformat.h formats/mplayer/mplayeroutputformat.h
0060         formats/mplayer2/mplayer2inputformat.h formats/mplayer2/mplayer2outputformat.h
0061         formats/subrip/subripinputformat.h formats/subrip/subripoutputformat.h
0062         formats/substationalpha/substationalphainputformat.h formats/substationalpha/substationalphaoutputformat.h
0063         formats/subviewer1/subviewer1inputformat.h formats/subviewer1/subviewer1outputformat.h
0064         formats/subviewer2/subviewer2inputformat.h formats/subviewer2/subviewer2outputformat.h
0065         formats/textdemux/textdemux.cpp
0066         formats/tmplayer/tmplayerinputformat.h formats/tmplayer/tmplayeroutputformat.h
0067         formats/vobsub/vobsubinputformat.h formats/vobsub/vobsubinputinitdialog.cpp formats/vobsub/vobsubinputprocessdialog.cpp
0068         formats/webvtt/webvttinputformat.cpp formats/webvtt/webvttoutputformat.cpp
0069         formats/youtubecaptions/youtubecaptionsinputformat.h formats/youtubecaptions/youtubecaptionsoutputformat.h
0070         #[[ gui ]] gui/currentlinewidget.cpp gui/playerwidget.cpp
0071         #[[ gui/waveform ]] gui/waveform/waveformwidget.cpp gui/waveform/wavebuffer.cpp gui/waveform/zoombuffer.cpp gui/waveform/waverenderer.cpp
0072         gui/waveform/wavesubtitle.cpp
0073         #[[ gui/treeview ]] gui/treeview/linesitemdelegate.cpp gui/treeview/linesmodel.cpp gui/treeview/linesselectionmodel.cpp gui/treeview/lineswidget.cpp
0074         gui/treeview/richlineedit.cpp gui/treeview/richdocumentptr.cpp gui/treeview/treeview.cpp
0075         #[[ gui/subtitlemetawidget ]] gui/subtitlemeta/subtitlemetawidget.cpp gui/subtitlemeta/csshighlighter.cpp
0076         gui/subtitlemeta/subtitlepositionwidget.cpp
0077         #[[ helpers ]] helpers/commondefs.cpp helpers/debug.cpp helpers/fileloadhelper.cpp helpers/filesavehelper.cpp helpers/filetrasher.cpp helpers/languagecode.cpp
0078         helpers/pluginhelper.h
0079         #[[ scripting ]] scripting/scriptsmanager.cpp
0080         scripting/scripting_rangesmodule.cpp scripting/scripting_stringsmodule.cpp scripting/scripting_subtitlemodule.cpp scripting/scripting_subtitlelinemodule.cpp
0081         scripting/scripting_list.cpp scripting/scripting_range.cpp scripting/scripting_rangelist.cpp scripting/scripting_richstring.cpp scripting/scripting_subtitle.cpp
0082         scripting/scripting_subtitleline.cpp
0083         #[[ speechprocessor ]] speechprocessor/speechprocessor.cpp speechprocessor/speechplugin.cpp
0084         #[[ streamprocessor ]] streamprocessor/streamprocessor.cpp
0085         #[[ translations ]] translate/translatedialog.cpp translate/translateengine.cpp
0086         #[[ translation engines ]] translate/deeplengine.cpp translate/googlecloudengine.cpp
0087         #[[ utils ]] utils/finder.cpp utils/replacer.cpp utils/speller.cpp
0088         #[[ videoplayer ]] videoplayer/videoplayer.cpp videoplayer/videowidget.cpp videoplayer/waveformat.h videoplayer/subtitletextoverlay.cpp
0089         videoplayer/backend/glrenderer.cpp videoplayer/backend/ffplayer.cpp videoplayer/backend/framequeue.cpp videoplayer/backend/packetqueue.cpp
0090         videoplayer/backend/decoder.cpp videoplayer/backend/audiodecoder.cpp videoplayer/backend/videodecoder.cpp videoplayer/backend/subtitledecoder.cpp
0091         videoplayer/backend/clock.cpp videoplayer/backend/streamdemuxer.cpp videoplayer/backend/renderthread.cpp videoplayer/backend/videostate.cpp
0092         #[[ widgets ]] widgets/attachablewidget.cpp widgets/layeredwidget.cpp widgets/pointingslider.cpp widgets/simplerichtextedit.cpp
0093         widgets/textoverlaywidget.cpp widgets/timeedit.cpp
0094         CACHE INTERNAL EXPORTEDVARIABLE
0095         )
0096 
0097 kconfig_add_kcfg_files(subtitlecomposer_SRCS GENERATE_MOC scconfig.kcfgc)
0098 
0099 ki18n_wrap_ui(subtitlecomposer_SRCS
0100         #[[ configs ]] configs/errorsconfigwidget.ui configs/generalconfigwidget.ui configs/playerconfigwidget.ui configs/waveformconfigwidget.ui
0101         #[[ dialogs ]] dialogs/encodingdetectdialog.ui dialogs/intinputdialog.ui dialogs/subtitleclassdialog.ui dialogs/subtitlevoicedialog.ui
0102         dialogs/textinputdialog.ui
0103         #[[ formats ]] formats/vobsub/vobsubinputinitdialog.ui formats/vobsub/vobsubinputprocessdialog.ui
0104         #[[ gui/subtitlemetawidget ]] gui/subtitlemeta/subtitlepositionwidget.ui
0105         #[[ scripting ]] scripting/scriptsmanager.ui
0106         #[[ translation engines ]] translate/deeplengine.ui translate/googlecloudengine.ui
0107         )
0108 
0109 add_subdirectory(icons)
0110 
0111 list(APPEND subtitlecomposer_RES ${CMAKE_CURRENT_SOURCE_DIR}/subtitlecomposer.qrc)
0112 
0113 if(QT_MAJOR_VERSION EQUAL 6)
0114         qt6_add_resources(subtitlecomposer_RES_SRC ${subtitlecomposer_RES})
0115 else()
0116         qt5_add_resources(subtitlecomposer_RES_SRC ${subtitlecomposer_RES})
0117 endif()
0118 
0119 add_library(subtitlecomposer-lib STATIC ${subtitlecomposer_SRCS})
0120 target_link_libraries(subtitlecomposer-lib
0121         Qt${QT_MAJOR_VERSION}::Core Qt${QT_MAJOR_VERSION}::Widgets Qt${QT_MAJOR_VERSION}::WidgetsPrivate
0122         Qt${QT_MAJOR_VERSION}::Gui Qt${QT_MAJOR_VERSION}::Qml 
0123         KF${KF_MAJOR_VERSION}::CoreAddons KF${KF_MAJOR_VERSION}::WidgetsAddons KF${KF_MAJOR_VERSION}::TextWidgets KF${KF_MAJOR_VERSION}::Codecs
0124         KF${KF_MAJOR_VERSION}::SonnetCore KF${KF_MAJOR_VERSION}::SonnetUi
0125         KF${KF_MAJOR_VERSION}::KIOCore KF${KF_MAJOR_VERSION}::KIOFileWidgets KF${KF_MAJOR_VERSION}::KIOWidgets
0126         KF${KF_MAJOR_VERSION}::XmlGui KF${KF_MAJOR_VERSION}::I18n
0127         OpenSSL::SSL
0128         ${FFMPEG_LIBRARIES}
0129         ${OPENAL_LIBRARY}
0130         ${ICU_LIBRARIES}
0131 )
0132 if(QT_MAJOR_VERSION EQUAL 6)
0133         target_link_libraries(subtitlecomposer-lib Qt::OpenGLWidgets Qt::Core5Compat)
0134 endif()
0135 target_include_directories(subtitlecomposer-lib PUBLIC
0136         ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
0137         ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS} ${Qt${QT_MAJOR_VERSION}Widgets_PRIVATE_INCLUDE_DIRS}
0138         ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS} ${Qt${QT_MAJOR_VERSION}Gui_PRIVATE_INCLUDE_DIRS}
0139         ${OPENAL_INCLUDE_DIR}
0140         ${FFMPEG_INCLUDE_DIRS}
0141 )
0142 if(ICU_FOUND)
0143         message(STATUS "ICU Library will be used for charset detection.")
0144         set(HAVE_ICU 1 CACHE INTERNAL EXPORTEDVARIABLE)
0145         target_include_directories(subtitlecomposer-lib PUBLIC ${ICU_INCLUDE_DIRS})
0146 else()
0147         message(STATUS "ICU Library not found. KEncodingProber fallback will be used for charset detection.")
0148 endif()
0149 
0150 add_subdirectory(tests)
0151 add_subdirectory(scripting)
0152 
0153 add_executable(subtitlecomposer WIN32 main.cpp ${subtitlecomposer_RES_SRC})
0154 target_link_libraries(subtitlecomposer subtitlecomposer-lib)
0155 
0156 install(TARGETS subtitlecomposer DESTINATION ${KDE_INSTALL_BINDIR})
0157 
0158 install(FILES subtitlecomposerrc DESTINATION ${KDE_INSTALL_CONFDIR})
0159 install(FILES org.kde.subtitlecomposer.desktop DESTINATION ${KDE_INSTALL_APPDIR})
0160 install(FILES org.kde.subtitlecomposer.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
0161 install(FILES subtitlecomposer.xml DESTINATION ${KDE_INSTALL_MIMEDIR})
0162 
0163 # build plugins
0164 add_subdirectory(speechplugins/pocketsphinx)
0165 
0166 # do the configuration of config.h at the end, so all the necessary variables have been set
0167 configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)