diff --git a/CMakeLists.txt b/CMakeLists.txt index aa6035e7fe050d1140f8f753f463acbaf7d6cfbb..b48a05a05ca812c6c8c5637f6042a76b0391475c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,8 @@ SET(PROJECT_CONTACT "vlmc-devel@videolan.org") SET(PROJECT_VENDOR "VLMC Team") SET(ORG_WEBSITE "videolan.org") +option(FORCE_QT4 "Forces VLMC to build using Qt4" OFF) + # Configuring build type IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE "Debug" CACHE STRING @@ -103,70 +105,67 @@ ELSE(NOT APPLE) #SET(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}") ENDIF(NOT APPLE) -FIND_PACKAGE(LIBVLC) - IF (NOT LIBVLC_FOUND) - MESSAGE (SEND_ERROR "LibVLC dependency was not found (please get libvlc)!") - ENDIF (NOT LIBVLC_FOUND) - +FIND_PACKAGE(LIBVLC REQUIRED) +list(APPEND VLMC_LIBS ${LIBVLC_LIBRARY} ${LIBVLCCORE_LIBRARY}) INCLUDE_DIRECTORIES(${LIBVLC_INCLUDE_DIR}) -FIND_PACKAGE(frei0r) -IF (NOT FREI0R_FOUND) - MESSAGE (SEND_ERROR "frei0r not found! It is required for effects engine to work.") -ENDIF (NOT FREI0R_FOUND) +FIND_PACKAGE(frei0r REQUIRED) INCLUDE_DIRECTORIES(${FREI0R_INCLUDE_DIR}) -# search for Qt4 -IF (WITH_GUI) - IF(WIN32) - #FindQt4.cmake is so brain-dead when Xcompiling - SET(QT_LIBRARY_DIR ${CONTRIBS_PATH}/lib) - SET(QT_INCLUDE_DIR ${CONTRIBS_PATH}/include/qt4) - ADD_DEFINITIONS( -I${CONTRIBS_PATH}/include/qt4/QtCore) - ADD_DEFINITIONS( -I${CONTRIBS_PATH}/include/qt4/QtGui) - ADD_DEFINITIONS( -I${CONTRIBS_PATH}/include/qt4/QtXml) - ADD_DEFINITIONS( -I${CONTRIBS_PATH}/include/qt4/QtNetwork) - ADD_DEFINITIONS( -I${CONTRIBS_PATH}/include/qt4/) - FIND_PACKAGE(Qt4 4.5.1 COMPONENTS QtCore QtXml QtGui QtNetwork REQUIRED ) - ELSE(WIN32) - FIND_PACKAGE(Qt4 4.5.1 COMPONENTS QtCore QtXml QtGui QtNetwork REQUIRED ) - ENDIF(WIN32) -ELSE(WITH_GUI) - FIND_PACKAGE (Qt4 4.5.1 COMPONENTS QtCore QtNetwork QtXml REQUIRED) -ENDIF(WITH_GUI) -IF (NOT WIN32) - #FindQt4.cmake is so brain-dead when Xcompiling - SET (VLMC_LIBS ${QT_QTCORE_LIBRARY} - ${QT_QTGUI_LIBRARY} - ${QT_QTNETWORK_LIBRARY} - ${QT_QTSVG_LIBRARY} - ${QT_QTXML_LIBRARY} - ${LIBVLC_LIBRARY} - ${LIBVLCCORE_LIBRARY}) - - IF (APPLE) # Fails to link to Cocoa framework automatically - SET (VLMC_LIBS ${VLMC_LIBS} - ${CMAKE_OSX_SYSROOT}/System/Library/Frameworks/Cocoa.framework) - ELSE (APPLE) - IF (WITH_GUI) - SET (VLMC_LIBS ${VLMC_LIBS} -lX11) - ENDIF (WITH_GUI) - ENDIF(APPLE) - - INCLUDE(${QT_USE_FILE}) - ADD_DEFINITIONS(${QT_DEFINITIONS}) -ELSE (NOT WIN32) - SET (VLMC_LIBS -L${CONTRIBS_PATH}/lib - ${CONTRIBS_PATH}/lib/libQtNetwork.a - ${CONTRIBS_PATH}/lib/libQtXml.a - ${CONTRIBS_PATH}/lib/libQtGui.a - ${CONTRIBS_PATH}/lib/libQtCore.a - ${CONTRIBS_PATH}/lib/libvlccore.dll.a - ${CONTRIBS_PATH}/lib/libvlc.dll.a - ws2_32 winmm imm32 libeay32 ssleay32 crypt32 gdi32) -ENDIF(NOT WIN32) +# search for Qt4 +if (NOT FORCE_QT4) + message(STATUS "using qt5") + find_package(Qt5Core ) + if (Qt5Core_DIR) + # go on with other packages + if(WITH_GUI) + find_package(Qt5 COMPONENTS Widgets Gui XML Network) + else() + find_packages(Qt5 COMPONENTS XML Network) + endif() + message(STATUS "Found Qt5! Be aware that Qt5-support is still experimental and not officially supported!") + + macro(qt_wrap_ui) + qt5_wrap_ui(${ARGN}) + endmacro() + + macro(qt_add_resources) + qt5_add_resources(${ARGN}) + endmacro() + + find_package(Qt5LinguistTools REQUIRED) + macro(qt_add_translation) + qt5_add_translation(${ARGN}) + endmacro() + endif() +else() + message(STATUS "Could not find Qt5, searching for Qt4 instead...") + + set(NEEDED_QT4_COMPONENTS "QtCore" "QtXml" "QtNetwork") + if( WITH_GUI ) + list(APPEND NEEDED_QT4_COMPONENTS "QtGui") + endif() + + macro_optional_find_package(Qt4 4.7.0 COMPONENTS ${NEEDED_QT4_COMPONENTS} ) + macro_log_feature(QT4_FOUND "Qt" "A cross-platform application and UI framework" "http://qt.nokia.com" TRUE "" "If you see this, although libqt4-devel is installed, check whether the \n qtwebkit-devel package and whatever contains QtUiTools is installed too") + + macro(qt5_use_modules) + endmacro() + + macro(qt_wrap_ui) + qt4_wrap_ui(${ARGN}) + endmacro() + + macro(qt_add_resources) + qt4_add_resources(${ARGN}) + endmacro() + + macro(qt_add_translation) + qt4_add_translation(${ARGN}) + endmacro() +endif() # layout of VLMC installation # (default values are platform-specific) @@ -209,7 +208,7 @@ IF (UNIX) SET (VLMC_MANUAL_DIR ${CMAKE_INSTALL_PREFIX}/${VLMC_MANUAL_SUBDIR}) ENDIF (UNIX) -SUBDIRS(ts) +#SUBDIRS(ts) SUBDIRS(src) SUBDIRS(nsis) SUBDIRS(effects) @@ -272,8 +271,6 @@ ELSE(WIN32 AND NOT UNIX) #SET(CPACK_SOURCE_STRIP_FILES "") ENDIF(WIN32 AND NOT UNIX) -SET(PACKAGE_REQUIRES "libvlc-dev ( >= 1.1.4 ), frei0r-plugins, libqt4-gui ( >= 4.6 ), libqt4-network ( >= 4.6 ), libqt4-svg ( >= 4.6 ), libqt4-xml ( >= 4.6 )") - # RPM packages INCLUDE ( ${CMAKE_MODULE_PATH}/RpmBuild.cmake ) IF ( RPMBUILD_FOUND AND NOT WIN32 ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 98fb490c8ff2be3c447eb820d18529beefbee4f2..874d0becdcdcb1b8c7d72c093a7ee4c97e7377f5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -103,8 +103,9 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/cmake/config.h.cmake ${CMAKE_CURRENT_BINARY_D IF (NOT WITH_GUI) LIST (APPEND VLMC_SRCS Main/main.cpp Renderer/ConsoleRenderer.cpp ) - QT4_ADD_RESOURCES(VLMC_RCC_SRCS ${VLMC_RCC}) + QT_ADD_RESOURCES(VLMC_RCC_SRCS ${VLMC_RCC}) ADD_EXECUTABLE(vlmc ${GUI_TYPE} ${VLMC_SRCS} ${VLMC_MOC_SRCS} ${VLMC_RCC_SRCS}) + qt5_use_modules(vlmc Core Xml Network) TARGET_LINK_LIBRARIES(vlmc ${VLMC_LIBS}) #Add GUI stuff if required @@ -220,8 +221,8 @@ ELSE(NOT WITH_GUI) LIST( APPEND VLMC_UIS Gui/widgets/ui/CrashHandler.ui ) ENDIF(WITH_CRASHHANDLER_GUI) - QT4_WRAP_UI(VLMC_UIS_H ${VLMC_UIS}) - QT4_ADD_RESOURCES(VLMC_RCC_SRCS ${VLMC_RCC}) + QT_WRAP_UI(VLMC_UIS_H ${VLMC_UIS}) + QT_ADD_RESOURCES(VLMC_RCC_SRCS ${VLMC_RCC}) IF( MINGW ) # resource compilation for MinGW @@ -251,6 +252,7 @@ ELSE(NOT WITH_GUI) ADD_EXECUTABLE( vlmc ${GUI_TYPE} ${VLMC_SRCS} ${VLMC_MOC_SRCS} ${VLMC_UIS_H} ${VLMC_RCC_SRCS} ) TARGET_LINK_LIBRARIES( vlmc ${VLMC_LIBS} ) + qt5_use_modules(vlmc Core Gui Widgets Xml Network) ENDIF( NOT WITH_GUI )