find_package(${QT_PACKAGE_NAME} REQUIRED COMPONENTS Gui) add_compile_definitions( WIN32_LEAN_AND_MEAN NOMINMAX ) add_library(dpclient) target_sources(dpclient PRIVATE document.cpp document.h settings_table.h settings.cpp settings.h brushes/brush.cpp brushes/brush.h brushes/brushpresetmodel.cpp brushes/brushpresetmodel.h canvas/acl.cpp canvas/acl.h canvas/blendmodes.cpp canvas/blendmodes.h canvas/canvasmodel.cpp canvas/canvasmodel.h canvas/canvasshortcuts.cpp canvas/canvasshortcuts.h canvas/documentmetadata.cpp canvas/documentmetadata.h canvas/indexbuilderrunnable.cpp canvas/indexbuilderrunnable.h canvas/layerlist.cpp canvas/layerlist.h canvas/paintengine.cpp canvas/paintengine.h canvas/point.h canvas/reconnectstate.cpp canvas/reconnectstate.h canvas/selectionmodel.cpp canvas/selectionmodel.h canvas/tilecache.cpp canvas/tilecache.h canvas/timelinemodel.cpp canvas/timelinemodel.h canvas/transformmodel.cpp canvas/transformmodel.h canvas/userlist.cpp canvas/userlist.h parentalcontrols/parentalcontrols.cpp parentalcontrols/parentalcontrols.h drawdance/aclstate.cpp drawdance/aclstate.h drawdance/annotation.cpp drawdance/annotation.h drawdance/annotationlist.cpp drawdance/annotationlist.h drawdance/brushengine.cpp drawdance/brushengine.h drawdance/brushpreview.cpp drawdance/brushpreview.h drawdance/canvashistory.cpp drawdance/canvashistory.h drawdance/canvasstate.cpp drawdance/canvasstate.h drawdance/documentmetadata.cpp drawdance/documentmetadata.h drawdance/eventlog.cpp drawdance/eventlog.h drawdance/global.cpp drawdance/global.h drawdance/image.cpp drawdance/image.h drawdance/keyframe.cpp drawdance/keyframe.h drawdance/layercontent.cpp drawdance/layercontent.h drawdance/layergroup.cpp drawdance/layergroup.h drawdance/layerlist.cpp drawdance/layerlist.h drawdance/layerprops.cpp drawdance/layerprops.h drawdance/layerpropslist.cpp drawdance/layerpropslist.h drawdance/paintengine.cpp drawdance/paintengine.h drawdance/perf.cpp drawdance/perf.h drawdance/selection.cpp drawdance/selection.h drawdance/selectionset.cpp drawdance/selectionset.h drawdance/snapshotqueue.cpp drawdance/snapshotqueue.h drawdance/strokeworker.cpp drawdance/strokeworker.h drawdance/tile.cpp drawdance/tile.h drawdance/timeline.cpp drawdance/timeline.h drawdance/track.cpp drawdance/track.h drawdance/viewmode.cpp drawdance/viewmode.h drawdance/ziparchive.cpp drawdance/ziparchive.h export/animationformat.cpp export/animationformat.h export/animationsaverrunnable.cpp export/animationsaverrunnable.h export/canvassaverrunnable.cpp export/canvassaverrunnable.h export/thumbnailerrunnable.cpp export/thumbnailerrunnable.h import/animationimporter.cpp import/animationimporter.h import/canvasloaderrunnable.cpp import/canvasloaderrunnable.h import/loadresult.cpp import/loadresult.h net/announcementlist.cpp net/announcementlist.h net/authlistmodel.cpp net/authlistmodel.h net/banlistmodel.cpp net/banlistmodel.h net/client.cpp net/client.h net/invitelistmodel.cpp net/invitelistmodel.h net/login.cpp net/login.h net/loginsessions.cpp net/loginsessions.h net/message.cpp net/message.h net/server.cpp net/server.h net/sessionlistingmodel.cpp net/sessionlistingmodel.h tools/annotation.cpp tools/annotation.h tools/beziertool.cpp tools/beziertool.h tools/clickdetector.h tools/colorpicker.cpp tools/colorpicker.h tools/enums.h tools/floodfill.cpp tools/floodfill.h tools/gradient.cpp tools/gradient.h tools/freehand.cpp tools/freehand.h tools/inspector.cpp tools/inspector.h tools/laser.cpp tools/laser.h tools/lassofill.cpp tools/lassofill.h tools/magicwand.cpp tools/magicwand.h tools/pan.cpp tools/pan.h tools/selection.cpp tools/selection.h tools/shapetools.cpp tools/shapetools.h tools/tool.cpp tools/tool.h tools/toolcontroller.cpp tools/toolcontroller.h tools/toolproperties.cpp tools/toolproperties.h tools/transform.cpp tools/transform.h tools/utils.cpp tools/utils.h tools/zoom.cpp tools/zoom.h utils/annotations.cpp utils/annotations.h utils/avatarlistmodel.cpp utils/avatarlistmodel.h utils/avatarlistmodeldelegate.h utils/brushshortcutmodel.cpp utils/brushshortcutmodel.h utils/canvasshortcutsmodel.cpp utils/canvasshortcutsmodel.h utils/certificatestoremodel.cpp utils/certificatestoremodel.h utils/colorscheme.cpp utils/colorscheme.h utils/cursors.cpp utils/cursors.h utils/customshortcutmodel.cpp utils/customshortcutmodel.h utils/debouncetimer.cpp utils/debouncetimer.h utils/funstuff.cpp utils/funstuff.h utils/hostpresetmodel.cpp utils/hostpresetmodel.h utils/html.cpp utils/html.h utils/html_gen.cpp utils/identicon.cpp utils/identicon.h utils/images.cpp utils/images.h utils/keyframelayermodel.cpp utils/keyframelayermodel.h utils/kis_cubic_curve.cpp utils/kis_cubic_curve.h utils/listservermodel.cpp utils/listservermodel.h utils/logging.cpp utils/logging.h utils/scopedoverridecursor.h utils/selectionalteration.cpp utils/selectionalteration.h utils/selectionoutlinegenerator.cpp utils/selectionoutlinegenerator.h utils/sessionfilterproxymodel.cpp utils/sessionfilterproxymodel.h utils/sessionidvalidator.cpp utils/sessionidvalidator.h utils/shortcutdetector.cpp utils/shortcutdetector.h utils/statedatabase.cpp utils/statedatabase.h utils/transformquad.h utils/usernamevalidator.cpp utils/usernamevalidator.h utils/wasmpersistence.h ) if(ANDROID OR EMSCRIPTEN) # Android doesn't allow images to be placed on the system clipboard. # Emscripten can't freely access it. Emulate it via an internal buffer. target_compile_definitions(dpclient PUBLIC HAVE_CLIPBOARD_EMULATION=1) else() target_sources(dpclient PRIVATE export/ffmpegexporter.cpp export/ffmpegexporter.h export/imageseriesexporter.cpp export/imageseriesexporter.h export/videoexporter.cpp export/videoexporter.h ) endif() if(EMSCRIPTEN) target_sources(dpclient PRIVATE wasmsupport.cpp wasmsupport.h utils/wasmpersistence.cpp ) else() target_sources(dpclient PRIVATE utils/news.cpp utils/news.h) endif() if(HAVE_TCPSOCKETS) target_sources(dpclient PRIVATE net/tcpserver.cpp net/tcpserver.h ) if(BUILTINSERVER) target_compile_definitions(dpclient PUBLIC DP_HAVE_BUILTIN_SERVER=1) target_link_libraries(dpclient PUBLIC dpserver) target_sources(dpclient PRIVATE server/builtinclient.cpp server/builtinclient.h server/builtinreset.cpp server/builtinreset.h server/builtinsession.cpp server/builtinsession.h server/builtinserver.cpp server/builtinserver.h ) endif() endif() # https://gitlab.kitware.com/cmake/cmake/-/issues/19813 if(WIN32) target_sources(dpclient PRIVATE parentalcontrols/parentalcontrols_win.cpp ) else() target_sources(dpclient PRIVATE parentalcontrols/parentalcontrols_dummy.cpp ) endif() target_link_libraries(dpclient PRIVATE cmake-config PUBLIC dpshared drawdance_client ${QT_PACKAGE_NAME}::Core ${QT_PACKAGE_NAME}::Network ${QT_PACKAGE_NAME}::Gui ) if(TARGET ${QT_PACKAGE_NAME}::WebSockets) target_sources(dpclient PRIVATE net/websocketserver.cpp net/websocketserver.h ) target_link_libraries(dpclient PUBLIC ${QT_PACKAGE_NAME}::WebSockets) endif() if(${QT_PACKAGE_NAME}LinguistTools_FOUND) add_subdirectory(i18n) endif() if(TESTS) add_subdirectory(tests) endif() directory_auto_source_groups()