mirror of https://github.com/qTox/qTox.git
4 changed files with 702 additions and 0 deletions
@ -0,0 +1,492 @@
@@ -0,0 +1,492 @@
|
||||
################################################################################ |
||||
# |
||||
# :: CMake configuration |
||||
# |
||||
################################################################################ |
||||
|
||||
cmake_minimum_required(VERSION 2.8.11) |
||||
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) |
||||
|
||||
if(NOT CMAKE_BUILD_TYPE) |
||||
set(CMAKE_BUILD_TYPE Debug) |
||||
endif() |
||||
|
||||
set(ENV{PKG_CONFIG_PATH} |
||||
${CMAKE_SOURCE_DIR}/libs/lib/pkgconfig:/opt/ffmpeg/lib/pkgconfig:$ENV{PKG_CONFIG_PATH}) |
||||
set(ENV{PKG_CONFIG_PATH_i686_w64_mingw32_shared} |
||||
${CMAKE_SOURCE_DIR}/libs/lib/pkgconfig) |
||||
set(ENV{PKG_CONFIG_PATH_x86_64_w64_mingw32_shared} |
||||
${CMAKE_SOURCE_DIR}/libs/lib/pkgconfig) |
||||
|
||||
execute_process( |
||||
COMMAND brew --prefix qt5 |
||||
OUTPUT_VARIABLE QT_PREFIX_PATH |
||||
OUTPUT_STRIP_TRAILING_WHITESPACE) |
||||
if(NOT QT_PREFIX_PATH) |
||||
set(QT_PREFIX_PATH |
||||
/usr/src/mxe/usr/x86_64-w64-mingw32.shared/qt5 |
||||
/usr/src/mxe/usr/i686-w64-mingw32.shared/qt5) |
||||
endif() |
||||
|
||||
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${QT_PREFIX_PATH}) |
||||
|
||||
execute_process( |
||||
COMMAND xcode-select -p |
||||
OUTPUT_VARIABLE CMAKE_OSX_SYSROOT |
||||
OUTPUT_STRIP_TRAILING_WHITESPACE) |
||||
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.12) |
||||
set(CMAKE_OSX_SYSROOT |
||||
${CMAKE_OSX_SYSROOT}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${CMAKE_OSX_DEPLOYMENT_TARGET}.sdk) |
||||
|
||||
project(qtox) |
||||
include(CTest) |
||||
|
||||
# Instruct CMake to run moc automatically when needed. |
||||
set(CMAKE_AUTOMOC ON) |
||||
|
||||
# Use C++11. |
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") |
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") |
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") |
||||
|
||||
# Search for headers in current directory. |
||||
include_directories(${CMAKE_BINARY_DIR}) |
||||
include_directories(${CMAKE_SOURCE_DIR}) |
||||
|
||||
include(Dependencies) |
||||
|
||||
################################################################################ |
||||
# |
||||
# :: qTox main library sources |
||||
# |
||||
################################################################################ |
||||
|
||||
qt5_wrap_ui(${PROJECT_NAME}_FORMS |
||||
src/chatlog/content/filetransferwidget.ui |
||||
src/loginscreen.ui |
||||
src/mainwindow.ui |
||||
src/widget/about/aboutuser.ui |
||||
src/widget/form/loadhistorydialog.ui |
||||
src/widget/form/profileform.ui |
||||
src/widget/form/removefrienddialog.ui |
||||
src/widget/form/setpassworddialog.ui |
||||
src/widget/form/settings/aboutsettings.ui |
||||
src/widget/form/settings/advancedsettings.ui |
||||
src/widget/form/settings/avform.ui |
||||
src/widget/form/settings/generalsettings.ui |
||||
src/widget/form/settings/privacysettings.ui |
||||
src/widget/form/settings/userinterfacesettings.ui) |
||||
|
||||
qt5_add_translation(${PROJECT_NAME}_QM_FILES |
||||
translations/ar.ts |
||||
translations/be.ts |
||||
translations/bg.ts |
||||
translations/cs.ts |
||||
translations/da.ts |
||||
translations/de.ts |
||||
translations/el.ts |
||||
translations/eo.ts |
||||
translations/es.ts |
||||
translations/et.ts |
||||
translations/fi.ts |
||||
translations/fr.ts |
||||
translations/he.ts |
||||
translations/hr.ts |
||||
translations/hu.ts |
||||
translations/it.ts |
||||
translations/ja.ts |
||||
translations/jbo.ts |
||||
translations/ko.ts |
||||
translations/nl.ts |
||||
translations/no_nb.ts |
||||
translations/lt.ts |
||||
translations/pl.ts |
||||
translations/pr.ts |
||||
translations/pt.ts |
||||
translations/ru.ts |
||||
translations/sk.ts |
||||
translations/sl.ts |
||||
translations/sv.ts |
||||
translations/sw.ts |
||||
translations/tr.ts |
||||
translations/ug.ts |
||||
translations/uk.ts |
||||
translations/zh.ts |
||||
) |
||||
|
||||
qt5_add_resources(${PROJECT_NAME}_RESOURCES |
||||
res.qrc |
||||
smileys/smileys.qrc |
||||
${CMAKE_CURRENT_BINARY_DIR}/translations.qrc |
||||
DEPENDS ${${PROJECT_NAME}_QM_FILES}) |
||||
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/translations.qrc.in" |
||||
"<!DOCTYPE RCC> |
||||
<RCC version=\"1.0\"> |
||||
<qresource prefix=\"/translations\"> |
||||
") |
||||
foreach(qm ${${PROJECT_NAME}_QM_FILES}) |
||||
get_filename_component(qm_name ${qm} NAME) |
||||
file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/translations.qrc.in" |
||||
" <file alias=\"${qm_name}\">${qm}</file>\n") |
||||
endforeach(qm) |
||||
file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/translations.qrc.in" |
||||
" </qresource> |
||||
</RCC> |
||||
") |
||||
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different |
||||
${CMAKE_CURRENT_BINARY_DIR}/translations.qrc.in |
||||
${CMAKE_CURRENT_BINARY_DIR}/translations.qrc) |
||||
|
||||
set(${PROJECT_NAME}_SOURCES |
||||
src/audio/audio.cpp |
||||
src/audio/audio.h |
||||
src/chatlog/chatlinecontent.cpp |
||||
src/chatlog/chatlinecontent.h |
||||
src/chatlog/chatlinecontentproxy.cpp |
||||
src/chatlog/chatlinecontentproxy.h |
||||
src/chatlog/chatline.cpp |
||||
src/chatlog/chatline.h |
||||
src/chatlog/chatlog.cpp |
||||
src/chatlog/chatlog.h |
||||
src/chatlog/chatmessage.cpp |
||||
src/chatlog/chatmessage.h |
||||
src/chatlog/content/filetransferwidget.cpp |
||||
src/chatlog/content/filetransferwidget.h |
||||
src/chatlog/content/image.cpp |
||||
src/chatlog/content/image.h |
||||
src/chatlog/content/notificationicon.cpp |
||||
src/chatlog/content/notificationicon.h |
||||
src/chatlog/content/spinner.cpp |
||||
src/chatlog/content/spinner.h |
||||
src/chatlog/content/text.cpp |
||||
src/chatlog/content/text.h |
||||
src/chatlog/content/timestamp.cpp |
||||
src/chatlog/content/timestamp.h |
||||
src/chatlog/customtextdocument.cpp |
||||
src/chatlog/customtextdocument.h |
||||
src/chatlog/documentcache.cpp |
||||
src/chatlog/documentcache.h |
||||
src/chatlog/pixmapcache.cpp |
||||
src/chatlog/pixmapcache.h |
||||
src/core/coreav.cpp |
||||
src/core/coreav.h |
||||
src/core/core.cpp |
||||
src/core/coredefines.h |
||||
src/core/coreencryption.cpp |
||||
src/core/corefile.cpp |
||||
src/core/corefile.h |
||||
src/core/core.h |
||||
src/core/corestructs.cpp |
||||
src/core/corestructs.h |
||||
src/core/cstring.cpp |
||||
src/core/cstring.h |
||||
src/core/indexedlist.h |
||||
src/core/recursivesignalblocker.cpp |
||||
src/core/recursivesignalblocker.h |
||||
src/core/toxcall.cpp |
||||
src/core/toxcall.h |
||||
src/core/toxid.cpp |
||||
src/core/toxid.h |
||||
src/core/toxpk.cpp |
||||
src/core/toxpk.h |
||||
src/friend.cpp |
||||
src/friend.h |
||||
src/friendlist.cpp |
||||
src/friendlist.h |
||||
src/group.cpp |
||||
src/group.h |
||||
src/grouplist.cpp |
||||
src/grouplist.h |
||||
src/ipc.cpp |
||||
src/ipc.h |
||||
src/net/autoupdate.cpp |
||||
src/net/autoupdate.h |
||||
src/net/avatarbroadcaster.cpp |
||||
src/net/avatarbroadcaster.h |
||||
src/net/toxme.cpp |
||||
src/net/toxme.h |
||||
src/net/toxuri.cpp |
||||
src/net/toxuri.h |
||||
src/nexus.cpp |
||||
src/nexus.h |
||||
src/persistence/db/encrypteddb.cpp |
||||
src/persistence/db/encrypteddb.h |
||||
src/persistence/db/genericddinterface.cpp |
||||
src/persistence/db/genericddinterface.h |
||||
src/persistence/db/plaindb.cpp |
||||
src/persistence/db/plaindb.h |
||||
src/persistence/db/rawdatabase.cpp |
||||
src/persistence/db/rawdatabase.h |
||||
src/persistence/history.cpp |
||||
src/persistence/history.h |
||||
src/persistence/historykeeper.cpp |
||||
src/persistence/historykeeper.h |
||||
src/persistence/offlinemsgengine.cpp |
||||
src/persistence/offlinemsgengine.h |
||||
src/persistence/profile.cpp |
||||
src/persistence/profile.h |
||||
src/persistence/profilelocker.cpp |
||||
src/persistence/profilelocker.h |
||||
src/persistence/serialize.cpp |
||||
src/persistence/serialize.h |
||||
src/persistence/settings.cpp |
||||
src/persistence/settings.h |
||||
src/persistence/settingsserializer.cpp |
||||
src/persistence/settingsserializer.h |
||||
src/persistence/smileypack.cpp |
||||
src/persistence/smileypack.h |
||||
src/persistence/toxsave.cpp |
||||
src/persistence/toxsave.h |
||||
src/platform/camera/directshow.cpp |
||||
src/platform/camera/directshow.h |
||||
src/platform/camera/v4l2.cpp |
||||
src/platform/camera/v4l2.h |
||||
src/platform/install_osx.cpp |
||||
src/platform/install_osx.h |
||||
src/platform/autorun.h |
||||
src/platform/capslock.h |
||||
src/platform/timer.h |
||||
src/platform/autorun_osx.cpp |
||||
src/platform/autorun_win.cpp |
||||
src/platform/autorun_xdg.cpp |
||||
src/platform/capslock_osx.cpp |
||||
src/platform/capslock_win.cpp |
||||
src/platform/capslock_x11.cpp |
||||
src/platform/timer_osx.cpp |
||||
src/platform/timer_win.cpp |
||||
src/platform/timer_x11.cpp |
||||
src/video/cameradevice.cpp |
||||
src/video/cameradevice.h |
||||
src/video/camerasource.cpp |
||||
src/video/camerasource.h |
||||
src/video/corevideosource.cpp |
||||
src/video/corevideosource.h |
||||
src/video/genericnetcamview.cpp |
||||
src/video/genericnetcamview.h |
||||
src/video/groupnetcamview.cpp |
||||
src/video/groupnetcamview.h |
||||
src/video/netcamview.cpp |
||||
src/video/netcamview.h |
||||
src/video/videoframe.cpp |
||||
src/video/videoframe.h |
||||
src/video/videomode.cpp |
||||
src/video/videomode.h |
||||
src/video/videosource.cpp |
||||
src/video/videosource.h |
||||
src/video/videosurface.cpp |
||||
src/video/videosurface.h |
||||
src/widget/about/aboutuser.cpp |
||||
src/widget/about/aboutuser.h |
||||
src/widget/categorywidget.cpp |
||||
src/widget/categorywidget.h |
||||
src/widget/circlewidget.cpp |
||||
src/widget/circlewidget.h |
||||
src/widget/contentdialog.cpp |
||||
src/widget/contentdialog.h |
||||
src/widget/contentlayout.cpp |
||||
src/widget/contentlayout.h |
||||
src/widget/emoticonswidget.cpp |
||||
src/widget/emoticonswidget.h |
||||
src/widget/flowlayout.cpp |
||||
src/widget/flowlayout.h |
||||
src/widget/form/addfriendform.cpp |
||||
src/widget/form/addfriendform.h |
||||
src/widget/form/chatform.cpp |
||||
src/widget/form/chatform.h |
||||
src/widget/form/filesform.cpp |
||||
src/widget/form/filesform.h |
||||
src/widget/form/genericchatform.cpp |
||||
src/widget/form/genericchatform.h |
||||
src/widget/form/groupchatform.cpp |
||||
src/widget/form/groupchatform.h |
||||
src/widget/form/groupinviteform.cpp |
||||
src/widget/form/groupinviteform.h |
||||
src/widget/form/loadhistorydialog.cpp |
||||
src/widget/form/loadhistorydialog.h |
||||
src/widget/form/profileform.cpp |
||||
src/widget/form/profileform.h |
||||
src/widget/form/setpassworddialog.cpp |
||||
src/widget/form/setpassworddialog.h |
||||
src/widget/form/settings/aboutform.cpp |
||||
src/widget/form/settings/aboutform.h |
||||
src/widget/form/settings/advancedform.cpp |
||||
src/widget/form/settings/advancedform.h |
||||
src/widget/form/settings/avform.cpp |
||||
src/widget/form/settings/avform.h |
||||
src/widget/form/settings/generalform.cpp |
||||
src/widget/form/settings/generalform.h |
||||
src/widget/form/settings/genericsettings.cpp |
||||
src/widget/form/settings/genericsettings.h |
||||
src/widget/form/settings/privacyform.cpp |
||||
src/widget/form/settings/privacyform.h |
||||
src/widget/form/settings/userinterfaceform.h |
||||
src/widget/form/settings/userinterfaceform.cpp |
||||
src/widget/form/settings/verticalonlyscroller.cpp |
||||
src/widget/form/settings/verticalonlyscroller.h |
||||
src/widget/form/settingswidget.cpp |
||||
src/widget/form/settingswidget.h |
||||
src/widget/form/tabcompleter.cpp |
||||
src/widget/form/tabcompleter.h |
||||
src/widget/friendlistlayout.cpp |
||||
src/widget/friendlistlayout.h |
||||
src/widget/friendlistwidget.cpp |
||||
src/widget/friendlistwidget.h |
||||
src/widget/friendwidget.cpp |
||||
src/widget/friendwidget.h |
||||
src/widget/genericchatitemlayout.cpp |
||||
src/widget/genericchatitemlayout.h |
||||
src/widget/genericchatitemwidget.cpp |
||||
src/widget/genericchatitemwidget.h |
||||
src/widget/genericchatroomwidget.cpp |
||||
src/widget/genericchatroomwidget.h |
||||
src/widget/groupwidget.cpp |
||||
src/widget/groupwidget.h |
||||
src/widget/gui.cpp |
||||
src/widget/gui.h |
||||
src/widget/loginscreen.cpp |
||||
src/widget/loginscreen.h |
||||
src/widget/maskablepixmapwidget.cpp |
||||
src/widget/maskablepixmapwidget.h |
||||
src/widget/notificationedgewidget.cpp |
||||
src/widget/notificationedgewidget.h |
||||
src/widget/notificationscrollarea.cpp |
||||
src/widget/notificationscrollarea.h |
||||
src/widget/passwordedit.cpp |
||||
src/widget/passwordedit.h |
||||
src/widget/qrwidget.cpp |
||||
src/widget/qrwidget.h |
||||
src/widget/style.cpp |
||||
src/widget/style.h |
||||
src/widget/systemtrayicon.cpp |
||||
src/widget/systemtrayicon.h |
||||
src/widget/systemtrayicon_private.h |
||||
src/widget/tool/activatedialog.cpp |
||||
src/widget/tool/activatedialog.h |
||||
src/widget/tool/adjustingscrollarea.cpp |
||||
src/widget/tool/adjustingscrollarea.h |
||||
src/widget/tool/callconfirmwidget.cpp |
||||
src/widget/tool/callconfirmwidget.h |
||||
src/widget/tool/chattextedit.cpp |
||||
src/widget/tool/chattextedit.h |
||||
src/widget/tool/croppinglabel.cpp |
||||
src/widget/tool/croppinglabel.h |
||||
src/widget/tool/flyoutoverlaywidget.cpp |
||||
src/widget/tool/flyoutoverlaywidget.h |
||||
src/widget/tool/friendrequestdialog.cpp |
||||
src/widget/tool/friendrequestdialog.h |
||||
src/widget/tool/micfeedbackwidget.cpp |
||||
src/widget/tool/micfeedbackwidget.h |
||||
src/widget/tool/movablewidget.cpp |
||||
src/widget/tool/movablewidget.h |
||||
src/widget/tool/profileimporter.cpp |
||||
src/widget/tool/profileimporter.h |
||||
src/widget/tool/removefrienddialog.cpp |
||||
src/widget/tool/removefrienddialog.h |
||||
src/widget/tool/screengrabberchooserrectitem.cpp |
||||
src/widget/tool/screengrabberchooserrectitem.h |
||||
src/widget/tool/screengrabberoverlayitem.cpp |
||||
src/widget/tool/screengrabberoverlayitem.h |
||||
src/widget/tool/screenshotgrabber.cpp |
||||
src/widget/tool/screenshotgrabber.h |
||||
src/widget/tool/toolboxgraphicsitem.cpp |
||||
src/widget/tool/toolboxgraphicsitem.h |
||||
src/widget/translator.cpp |
||||
src/widget/translator.h |
||||
src/widget/widget.cpp |
||||
src/widget/widget.h) |
||||
|
||||
if(GDK_PIXBUF_FOUND AND GLIB_FOUND AND GTK_FOUND) |
||||
set(${PROJECT_NAME}_SOURCES ${${PROJECT_NAME}_SOURCES} |
||||
src/platform/statusnotifier/closures.c |
||||
src/platform/statusnotifier/closures.h |
||||
src/platform/statusnotifier/enums.c |
||||
src/platform/statusnotifier/enums.h |
||||
src/platform/statusnotifier/interfaces.h |
||||
src/platform/statusnotifier/statusnotifier.c |
||||
src/platform/statusnotifier/statusnotifier.h) |
||||
add_definitions(-DENABLE_SYSTRAY_STATUSNOTIFIER_BACKEND=1) |
||||
endif() |
||||
|
||||
if(AVFOUNDATION_FOUND) |
||||
set(${PROJECT_NAME}_SOURCES ${${PROJECT_NAME}_SOURCES} |
||||
src/platform/camera/avfoundation.mm |
||||
src/platform/camera/avfoundation.h) |
||||
endif() |
||||
|
||||
if(APPINDICATOR_FOUND) |
||||
add_definitions(-DENABLE_SYSTRAY_UNITY_BACKEND=1) |
||||
endif() |
||||
|
||||
if(GTK_FOUND) |
||||
add_definitions(-DENABLE_SYSTRAY_GTK_BACKEND=1) |
||||
endif() |
||||
|
||||
add_library(${PROJECT_NAME}_static |
||||
STATIC |
||||
${${PROJECT_NAME}_FORMS} |
||||
${${PROJECT_NAME}_SOURCES} |
||||
${${PROJECT_NAME}_QM_FILES}) |
||||
target_link_libraries(${PROJECT_NAME}_static |
||||
${ALL_LIBRARIES}) |
||||
|
||||
add_executable(${PROJECT_NAME} |
||||
WIN32 |
||||
MACOSX_BUNDLE |
||||
${${PROJECT_NAME}_RESOURCES} |
||||
src/main.cpp) |
||||
target_link_libraries(${PROJECT_NAME} |
||||
${PROJECT_NAME}_static |
||||
${ALL_LIBRARIES}) |
||||
|
||||
################################################################################ |
||||
# |
||||
# :: Tests |
||||
# |
||||
################################################################################ |
||||
|
||||
function(auto_test subsystem module) |
||||
add_executable(${module}_test |
||||
test/${subsystem}/${module}_test.cpp) |
||||
target_link_libraries(${module}_test |
||||
${PROJECT_NAME}_static |
||||
${ALL_LIBRARIES} |
||||
Qt5::Test) |
||||
add_test( |
||||
NAME test_${module} |
||||
COMMAND ${module}_test) |
||||
endfunction() |
||||
|
||||
################################################################################ |
||||
# |
||||
# :: Installation |
||||
# |
||||
################################################################################ |
||||
|
||||
if(APPLE) |
||||
set(MACOSX_BUNDLE_SHORT_VERSION_STRING 1.4.1) |
||||
set(SHORT_VERSION ${MACOSX_BUNDLE_SHORT_VERSION_STRING}) |
||||
set_target_properties(${PROJECT_NAME} PROPERTIES |
||||
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/osx/info.plist") |
||||
|
||||
find_path(MACDEPLOYQT_PATH macdeployqt PATH_SUFFIXES bin) |
||||
if(NOT MACDEPLOYQT_PATH) |
||||
message(FATAL_ERROR "Could not find macdeployqt for OSX bundling. You can point MACDEPLOYQT_PATH to it's path.") |
||||
endif() |
||||
|
||||
set(BUNDLE_PATH "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.app") |
||||
|
||||
install(CODE " |
||||
message(STATUS \"Creating app bundle\") |
||||
execute_process(COMMAND ${MACDEPLOYQT_PATH}/macdeployqt ${BUNDLE_PATH} -no-strip) |
||||
message(STATUS \"Updating library paths\") |
||||
execute_process(COMMAND ${CMAKE_SOURCE_DIR}/osx/macfixrpath ${BUNDLE_PATH}) |
||||
message(STATUS \"Creating dmg image\") |
||||
execute_process(COMMAND hdiutil create -volname ${PROJECT_NAME} -srcfolder ${BUNDLE_PATH} -ov -format UDZO ${PROJECT_NAME}.dmg) |
||||
" COMPONENT Runtime |
||||
) |
||||
else() |
||||
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION "bin") |
||||
endif() |
@ -0,0 +1,119 @@
@@ -0,0 +1,119 @@
|
||||
################################################################################ |
||||
# |
||||
# :: Dependencies |
||||
# |
||||
################################################################################ |
||||
|
||||
# This should go into subdirectories later. |
||||
find_package(PkgConfig REQUIRED) |
||||
find_package(Qt5Core REQUIRED) |
||||
find_package(Qt5Gui REQUIRED) |
||||
find_package(Qt5LinguistTools REQUIRED) |
||||
find_package(Qt5Network REQUIRED) |
||||
find_package(Qt5OpenGL REQUIRED) |
||||
find_package(Qt5Sql REQUIRED) |
||||
find_package(Qt5Svg REQUIRED) |
||||
find_package(Qt5Test REQUIRED) |
||||
find_package(Qt5Widgets REQUIRED) |
||||
find_package(Qt5Xml REQUIRED) |
||||
|
||||
function(add_dependency) |
||||
set(ALL_LIBRARIES ${ALL_LIBRARIES} ${ARGN} PARENT_SCOPE) |
||||
endfunction() |
||||
|
||||
# Everything links to these Qt libraries. |
||||
add_dependency( |
||||
Qt5::Core |
||||
Qt5::Gui |
||||
Qt5::Network |
||||
Qt5::OpenGL |
||||
Qt5::Sql |
||||
Qt5::Svg |
||||
Qt5::Widgets |
||||
Qt5::Xml) |
||||
|
||||
include(CMakeParseArguments) |
||||
include(Qt5CorePatches) |
||||
|
||||
function(search_dependency pkg) |
||||
set(options OPTIONAL) |
||||
set(oneValueArgs PACKAGE LIBRARY FRAMEWORK) |
||||
set(multiValueArgs) |
||||
cmake_parse_arguments(arg "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
||||
|
||||
# Try pkg-config first. |
||||
if(NOT ${pkg}_FOUND AND arg_PACKAGE) |
||||
pkg_search_module(${pkg} ${arg_PACKAGE}) |
||||
endif() |
||||
|
||||
# Then, try OSX frameworks. |
||||
if(NOT ${pkg}_FOUND AND arg_FRAMEWORK) |
||||
find_library(${pkg}_LIBRARIES NAMES ${arg_FRAMEWORK} PATHS ${CMAKE_OSX_SYSROOT}/System/Library PATH_SUFFIXES Frameworks NO_DEFAULT_PATH) |
||||
if(${pkg}_LIBRARIES) |
||||
set(${pkg}_FOUND TRUE) |
||||
endif() |
||||
endif() |
||||
|
||||
# Last, search for the library itself globally. |
||||
if(NOT ${pkg}_FOUND AND arg_LIBRARY) |
||||
find_library(${pkg}_LIBRARIES NAMES ${arg_LIBRARY}) |
||||
if(${pkg}_LIBRARIES) |
||||
set(${pkg}_FOUND TRUE) |
||||
endif() |
||||
endif() |
||||
|
||||
if(NOT ${pkg}_FOUND) |
||||
if(NOT arg_OPTIONAL) |
||||
message(FATAL_ERROR "${pkg} package, library or framework not found") |
||||
endif() |
||||
else() |
||||
link_directories(${${pkg}_LIBRARY_DIRS}) |
||||
include_directories(${${pkg}_INCLUDE_DIRS}) |
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${${pkg}_CFLAGS_OTHER}" PARENT_SCOPE) |
||||
set(ALL_LIBRARIES ${ALL_LIBRARIES} ${${pkg}_LIBRARIES} PARENT_SCOPE) |
||||
endif() |
||||
|
||||
set(${pkg}_FOUND ${${pkg}_FOUND} PARENT_SCOPE) |
||||
endfunction() |
||||
|
||||
search_dependency(APPINDICATOR PACKAGE appindicator-0.1 OPTIONAL) |
||||
search_dependency(GDK_PIXBUF PACKAGE gdk-pixbuf-2.0 OPTIONAL) |
||||
search_dependency(GLIB PACKAGE glib-2.0 OPTIONAL) |
||||
search_dependency(GTK PACKAGE gtk+-2.0 OPTIONAL) |
||||
search_dependency(X11 PACKAGE x11 OPTIONAL) |
||||
|
||||
search_dependency(LIBAVCODEC PACKAGE libavcodec) |
||||
search_dependency(LIBAVDEVICE PACKAGE libavdevice) |
||||
search_dependency(LIBAVFORMAT PACKAGE libavformat) |
||||
search_dependency(LIBAVUTIL PACKAGE libavutil) |
||||
search_dependency(LIBQRENCODE PACKAGE libqrencode) |
||||
search_dependency(LIBSODIUM PACKAGE libsodium) |
||||
search_dependency(LIBSWSCALE PACKAGE libswscale) |
||||
search_dependency(SQLCIPHER PACKAGE sqlcipher) |
||||
search_dependency(TOXCORE PACKAGE libtoxcore) |
||||
search_dependency(TOXAV PACKAGE libtoxav) |
||||
search_dependency(VPX PACKAGE vpx) |
||||
|
||||
search_dependency(OPENAL PACKAGE openal FRAMEWORK OpenAL) |
||||
|
||||
# XScreenSaver support. |
||||
search_dependency(XSS LIBRARY Xss OPTIONAL) |
||||
|
||||
if(APPLE) |
||||
search_dependency(AVFOUNDATION FRAMEWORK AVFoundation) |
||||
search_dependency(COREMEDIA FRAMEWORK CoreMedia ) |
||||
search_dependency(COREGRAPHICS FRAMEWORK CoreGraphics) |
||||
search_dependency(FOUNDATION FRAMEWORK Foundation ) |
||||
search_dependency(IOKIT FRAMEWORK IOKit ) |
||||
endif() |
||||
|
||||
if(WIN32) |
||||
search_dependency(STRMIIDS LIBRARY strmiids) |
||||
endif() |
||||
|
||||
add_definitions( |
||||
-DQTOX_PLATFORM_EXT=1 |
||||
-DGIT_COMMIT="N/A" |
||||
-DGIT_DESCRIBE="N/A" |
||||
-DGIT_VERSION="N/A" |
||||
-DTIMESTAMP="N/A") |
@ -0,0 +1,90 @@
@@ -0,0 +1,90 @@
|
||||
#============================================================================= |
||||
# Copyright 2005-2011 Kitware, Inc. |
||||
# All rights reserved. |
||||
# |
||||
# Redistribution and use in source and binary forms, with or without |
||||
# modification, are permitted provided that the following conditions |
||||
# are met: |
||||
# |
||||
# * Redistributions of source code must retain the above copyright |
||||
# notice, this list of conditions and the following disclaimer. |
||||
# |
||||
# * Redistributions in binary form must reproduce the above copyright |
||||
# notice, this list of conditions and the following disclaimer in the |
||||
# documentation and/or other materials provided with the distribution. |
||||
# |
||||
# * Neither the name of Kitware, Inc. nor the names of its |
||||
# contributors may be used to endorse or promote products derived |
||||
# from this software without specific prior written permission. |
||||
# |
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
#============================================================================= |
||||
|
||||
######################################################################### |
||||
# |
||||
# Patched versions of macros defined in Qt5CoreMacros.cmake |
||||
# |
||||
######################################################################### |
||||
|
||||
# qt5_add_resources(outfiles inputfile ... ) |
||||
|
||||
function(QT5_ADD_RESOURCES outfiles ) |
||||
|
||||
set(options) |
||||
set(oneValueArgs) |
||||
set(multiValueArgs OPTIONS DEPENDS) |
||||
|
||||
cmake_parse_arguments(_RCC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
||||
|
||||
set(rcc_files ${_RCC_UNPARSED_ARGUMENTS}) |
||||
set(rcc_options ${_RCC_OPTIONS}) |
||||
|
||||
foreach(it ${rcc_files}) |
||||
get_filename_component(outfilename ${it} NAME_WE) |
||||
get_filename_component(infile ${it} ABSOLUTE) |
||||
get_filename_component(rc_path ${infile} PATH) |
||||
set(outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${outfilename}.cpp) |
||||
|
||||
set(_RC_DEPENDS) |
||||
if(EXISTS "${infile}") |
||||
# parse file for dependencies |
||||
# all files are absolute paths or relative to the location of the qrc file |
||||
file(READ "${infile}" _RC_FILE_CONTENTS) |
||||
string(REGEX MATCHALL "<file[^<]+" _RC_FILES "${_RC_FILE_CONTENTS}") |
||||
foreach(_RC_FILE ${_RC_FILES}) |
||||
string(REGEX REPLACE "^<file[^>]*>" "" _RC_FILE "${_RC_FILE}") |
||||
if(NOT IS_ABSOLUTE "${_RC_FILE}") |
||||
set(_RC_FILE "${rc_path}/${_RC_FILE}") |
||||
endif() |
||||
set(_RC_DEPENDS ${_RC_DEPENDS} "${_RC_FILE}") |
||||
endforeach() |
||||
# Since this cmake macro is doing the dependency scanning for these files, |
||||
# let's make a configured file and add it as a dependency so cmake is run |
||||
# again when dependencies need to be recomputed. |
||||
qt5_make_output_file("${infile}" "" "qrc.depends" out_depends) |
||||
configure_file("${infile}" "${out_depends}") |
||||
else() |
||||
# The .qrc file does not exist (yet). Let's add a dependency and hope |
||||
# that it will be generated later |
||||
set(out_depends) |
||||
endif() |
||||
|
||||
add_custom_command(OUTPUT ${outfile} |
||||
COMMAND ${Qt5Core_RCC_EXECUTABLE} |
||||
ARGS ${rcc_options} -name ${outfilename} -o ${outfile} ${infile} |
||||
MAIN_DEPENDENCY ${infile} |
||||
DEPENDS ${_RC_DEPENDS} "${out_depends}" ${_RCC_DEPENDS} VERBATIM) |
||||
list(APPEND ${outfiles} ${outfile}) |
||||
endforeach() |
||||
set(${outfiles} ${${outfiles}} PARENT_SCOPE) |
||||
endfunction() |
Loading…
Reference in new issue