Warning, /multimedia/kdenlive/src/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 # SPDX-FileCopyrightText: 2007 Kdenlive contributors 0002 # SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0003 0004 0005 ### Find packages files 0006 find_package(LibV4L2) 0007 set_package_properties(LibV4L2 PROPERTIES 0008 DESCRIPTION "video4linux support libraries" 0009 URL "https://linuxtv.org/downloads/v4l-utils/" 0010 TYPE RUNTIME 0011 PURPOSE "Required for better webcam support") 0012 0013 if(WIN32) 0014 set(MLT_MELTBIN "melt.exe") 0015 set(MLT_DATADIR "../share/mlt") 0016 elseif(APPLE) 0017 set(MLT_MELTBIN "melt") 0018 set(MLT_DATADIR "../Resources/mlt") 0019 else() 0020 find_package(PkgConfig QUIET) 0021 execute_process( 0022 COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=mltdatadir mlt-framework-7 0023 OUTPUT_VARIABLE MLT_DATADIR 0024 RESULT_VARIABLE MLT_DATADIR_failed) 0025 if(NOT MLT_DATADIR_failed) 0026 string(REGEX REPLACE "[\r\n]" "" MLT_DATADIR "${MLT_DATADIR}") 0027 endif() 0028 0029 execute_process( 0030 COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=meltbin mlt-framework-7 0031 OUTPUT_VARIABLE MLT_MELTBIN 0032 RESULT_VARIABLE MLT_MELTBIN_failed) 0033 if(NOT MLT_MELTBIN_failed) 0034 string(REGEX REPLACE "[\r\n]" "" MLT_MELTBIN "${MLT_MELTBIN}") 0035 endif() 0036 endif() 0037 configure_file(mlt_config.h.in ${CMAKE_BINARY_DIR}/mlt_config.h) 0038 0039 check_include_files(linux/input.h HAVE_LINUX_INPUT_H) 0040 if(HAVE_LINUX_INPUT_H) 0041 list(APPEND kdenlive_SRCS 0042 jogshuttle/jogmanager.cpp 0043 jogshuttle/jogaction.cpp 0044 jogshuttle/jogshuttle.cpp 0045 jogshuttle/jogshuttleconfig.cpp) 0046 endif() 0047 0048 ### Find source files 0049 add_subdirectory(abstractmodel) 0050 add_subdirectory(assets) 0051 add_subdirectory(audiomixer) 0052 add_subdirectory(bin) 0053 add_subdirectory(capture) 0054 add_subdirectory(dialogs) 0055 add_subdirectory(doc) 0056 add_subdirectory(effects) 0057 add_subdirectory(jobs) 0058 add_subdirectory(lib) 0059 add_subdirectory(library) 0060 add_subdirectory(mltcontroller) 0061 add_subdirectory(monitor) 0062 add_subdirectory(onlineresources) 0063 add_subdirectory(profiles) 0064 add_subdirectory(project) 0065 add_subdirectory(pythoninterfaces) 0066 add_subdirectory(render) 0067 add_subdirectory(renderpresets) 0068 add_subdirectory(scopes) 0069 add_subdirectory(timeline2) 0070 add_subdirectory(titler) 0071 add_subdirectory(transitions) 0072 add_subdirectory(utils) 0073 add_subdirectory(widgets) 0074 add_subdirectory(xml) 0075 0076 ## toplevel source code files 0077 list(APPEND kdenlive_SRCS 0078 core.cpp 0079 definitions.cpp 0080 docktitlebarmanager.cpp 0081 layoutmanagement.cpp 0082 mainwindow.cpp 0083 mltconnection.cpp 0084 statusbarmessagelabel.cpp 0085 undohelper.cpp 0086 glaxnimatelauncher.cpp 0087 ) 0088 0089 if(CRASH_AUTO_TEST) 0090 list(APPEND kdenlive_SRCS logger.cpp) 0091 endif() 0092 0093 ## Others special cases 0094 kconfig_add_kcfg_files(kdenlive_SRCS kdenlivesettings.kcfgc) 0095 install(FILES kdenlivesettings.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) 0096 ecm_qt_declare_logging_category(kdenlive_SRCS 0097 HEADER kdenlive_debug.h 0098 IDENTIFIER KDENLIVE_LOG 0099 CATEGORY_NAME org.kde.multimedia.kdenlive 0100 DESCRIPTION "kdenlive" 0101 EXPORT KDENLIVE 0102 ) 0103 0104 if(NOT NODBUS) 0105 if(USE_VERSIONLESS_TARGETS) 0106 qt_add_dbus_adaptor(kdenlive_SRCS org.kdenlive.MainWindow.xml mainwindow.h MainWindow) 0107 else() 0108 qt5_add_dbus_adaptor(kdenlive_SRCS org.kdenlive.MainWindow.xml mainwindow.h MainWindow) 0109 endif() 0110 endif() 0111 0112 ## UI's 0113 file(GLOB kdenlive_UIS "ui/*.ui") 0114 ki18n_wrap_ui(kdenlive_UIS ${kdenlive_UIS}) 0115 0116 ## MOC 0117 if(USE_VERSIONLESS_TARGETS) 0118 qt_wrap_cpp(kdenlive_MOC definitions.h) 0119 else() 0120 qt5_wrap_cpp(kdenlive_MOC definitions.h) 0121 endif() 0122 set_property(SOURCE definitions.h PROPERTY SKIP_AUTOMOC ON) 0123 0124 add_library(kdenliveLib STATIC ${kdenlive_SRCS} ${kdenlive_UIS} ${kdenlive_MOC} lib/localeHandling.cpp lib/localeHandling.h) 0125 0126 if(USE_VERSIONLESS_TARGETS) 0127 qt_add_resources(kdenlive_extra_SRCS icons.qrc uiresources.qrc) 0128 else() 0129 qt5_add_resources(kdenlive_extra_SRCS icons.qrc uiresources.qrc) 0130 endif() 0131 0132 ## Icon for Windows and OSX 0133 file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/../data/icons/*-apps-kdenlive.png") 0134 ecm_add_app_icon(kdenlive ICONS ${ICONS_SRCS}) # icon name = variable name 0135 0136 ## Kdenlive Executable 0137 add_executable(kdenlive main.cpp ${kdenlive_extra_SRCS} ${kdenlive}) 0138 target_include_directories(kdenlive 0139 PRIVATE ${CMAKE_BINARY_DIR} 0140 ) 0141 target_include_directories(kdenlive 0142 SYSTEM PRIVATE ${MLT_INCLUDE_DIR} ${MLTPP_INCLUDE_DIR}) 0143 target_link_libraries(kdenlive kdenliveLib) 0144 install(TARGETS kdenlive DESTINATION ${KDE_INSTALL_BINDIR}) 0145 0146 ## Kdenlive Lib 0147 target_include_directories(kdenliveLib 0148 PRIVATE ${CMAKE_BINARY_DIR} 0149 ${CMAKE_CURRENT_SOURCE_DIR} 0150 ${CMAKE_CURRENT_SOURCE_DIR}/lib/external 0151 ${CMAKE_CURRENT_SOURCE_DIR}/lib 0152 ) 0153 target_include_directories(kdenliveLib 0154 SYSTEM PRIVATE ${MLT_INCLUDE_DIR} ${MLTPP_INCLUDE_DIR}) 0155 # Adds Qt definitions and include directories, and sets QT_LIBRARIES according 0156 # to the components requested in find_package(). 0157 # KDE definitions and include directories *must* always come first, Qt follows 0158 # (to avoid breaking builds when KDE and/or Qt are installed to different 0159 # prefixes). 0160 target_link_libraries(kdenliveLib 0161 KF${KF_MAJOR}::WidgetsAddons 0162 KF${KF_MAJOR}::Archive 0163 KF${KF_MAJOR}::CoreAddons 0164 KF${KF_MAJOR}::KIOCore 0165 KF${KF_MAJOR}::Codecs 0166 KF${KF_MAJOR}::KIOFileWidgets 0167 KF${KF_MAJOR}::KIOWidgets 0168 KF${KF_MAJOR}::NotifyConfig 0169 KF${KF_MAJOR}::XmlGui 0170 KF${KF_MAJOR}::GuiAddons 0171 KF${KF_MAJOR}::Notifications 0172 KF${KF_MAJOR}::TextWidgets 0173 KF${KF_MAJOR}::IconThemes 0174 KF${KF_MAJOR}::Solid 0175 KF${KF_MAJOR}::FileMetaData 0176 KF${KF_MAJOR}::Purpose 0177 KF${KF_MAJOR}::PurposeWidgets 0178 ${OPENGL_LIBRARIES} 0179 ${OPENGLES_LIBRARIES} 0180 ${MLT_LIBRARIES} 0181 ${MLTPP_LIBRARIES} 0182 ${CMAKE_DL_LIBS} 0183 ${CMAKE_THREAD_LIBS_INIT} 0184 kiss_fft) 0185 0186 if(KF${KF_MAJOR}NewStuff_VERSION VERSION_LESS "5.90") 0187 target_link_libraries(kdenliveLib 0188 KF${KF_MAJOR}::NewStuff) 0189 else() 0190 target_link_libraries(kdenliveLib 0191 KF${KF_MAJOR}::NewStuffWidgets) 0192 endif() 0193 0194 if (KF_MAJOR LESS "6") 0195 target_link_libraries(kdenliveLib 0196 KF${KF_MAJOR}::Declarative) 0197 endif() 0198 0199 if(USE_VERSIONLESS_TARGETS) 0200 target_link_libraries(kdenliveLib 0201 Qt::Svg 0202 Qt::Quick 0203 Qt::QuickControls2 0204 Qt::QuickWidgets 0205 Qt::Concurrent 0206 Qt::Multimedia 0207 Qt::NetworkAuth) 0208 else() 0209 target_link_libraries(kdenliveLib 0210 Qt${QT_MAJOR_VERSION}::Svg 0211 Qt${QT_MAJOR_VERSION}::Quick 0212 Qt${QT_MAJOR_VERSION}::QuickControls2 0213 Qt${QT_MAJOR_VERSION}::QuickWidgets 0214 Qt${QT_MAJOR_VERSION}::Concurrent 0215 Qt${QT_MAJOR_VERSION}::Multimedia 0216 Qt${QT_MAJOR_VERSION}::NetworkAuth) 0217 endif() 0218 if (QT_MAJOR_VERSION STREQUAL "6") 0219 target_link_libraries(kdenliveLib Qt${QT_MAJOR_VERSION}::SvgWidgets) 0220 endif() 0221 0222 if(WIN32 AND QT_MAJOR_VERSION STREQUAL "6") 0223 target_link_libraries(kdenliveLib d3d11 d3dcompiler) 0224 endif() 0225 0226 if(NOT NODBUS) 0227 target_link_libraries(kdenliveLib KF${KF_MAJOR}::DBusAddons) 0228 endif() 0229 if(BUILD_COVERAGE) 0230 target_link_libraries(kdenliveLib gcov) 0231 endif() 0232 set_property(TARGET kdenliveLib PROPERTY CXX_STANDARD 14) 0233 add_definitions(${qt${QT_MAJOR_VERSION}gui_definitions} -DQT_STRICT_ITERATORS -DQT_NO_CAST_FROM_BYTEARRAY) 0234 0235 # Optional deps 0236 if(CRASH_AUTO_TEST) 0237 target_compile_definitions(kdenliveLib PRIVATE CRASH_AUTO_TEST) 0238 if(TARGET RTTR::Core) 0239 target_link_libraries(kdenliveLib RTTR::Core) 0240 else() 0241 target_link_libraries(kdenliveLib RTTR::Core_Lib) 0242 endif() 0243 endif() 0244 0245 if(DRMINGW_FOUND) 0246 target_compile_definitions(kdenlive PRIVATE -DUSE_DRMINGW) 0247 target_include_directories(kdenlive SYSTEM PRIVATE ${DRMINGW_INCLUDE_DIR}) 0248 target_link_libraries(kdenlive ${DRMINGW_LIBRARY}) 0249 elseif(KF${KF_MAJOR}Crash_FOUND) 0250 target_compile_definitions(kdenlive PRIVATE -DKF5_USE_CRASH) 0251 target_link_libraries(kdenlive KF${KF_MAJOR}::Crash) 0252 endif() 0253 0254 if(Q_WS_X11) 0255 target_include_directories(kdenliveLib SYSTEM PRIVATE ${X11_Xlib_INCLUDE_PATH}) 0256 target_link_libraries(kdenliveLib ${X11_LIBRARIES}) 0257 endif() 0258 0259 if(SDL2_FOUND) 0260 target_link_libraries(kdenliveLib ${SDL2_LIBRARY}) 0261 elseif(SDL_FOUND) 0262 target_link_libraries(kdenliveLib ${SDL_LIBRARY}) 0263 endif() 0264 0265 if(LIBV4L2_FOUND) 0266 target_include_directories(kdenliveLib SYSTEM PRIVATE ${LIBV4L2_INCLUDE_DIR}) 0267 target_link_libraries(kdenliveLib ${LIBV4L2_LIBRARY}) 0268 target_compile_definitions(kdenliveLib PRIVATE -DUSE_V4L) 0269 endif() 0270 0271 if(HAVE_LINUX_INPUT_H) 0272 target_compile_definitions(kdenliveLib PRIVATE -DUSE_JOGSHUTTLE) 0273 target_link_libraries(kdenliveLib media_ctrl) 0274 endif() 0275 0276 if(APPLE) 0277 set_target_properties(kdenlive PROPERTIES MACOSX_BUNDLE ON) 0278 endif() 0279 0280 0281 if(NODBUS) 0282 target_compile_definitions(kdenliveLib PRIVATE -DNODBUS) 0283 target_compile_definitions(kdenlive PRIVATE -DNODBUS) 0284 endif() 0285 0286 if (BUILD_QCH) 0287 ecm_add_qch( 0288 Kdenlive_QCH 0289 NAME kdenlive 0290 VERSION ${KDENLIVE_VERSION} 0291 ORG_DOMAIN org.kde 0292 SOURCE_DIRS 0293 . 0294 MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md" 0295 TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} 0296 QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} 0297 COMPONENT Devel 0298 ) 0299 endif() 0300