diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 00000000..d36514f5 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,110 @@ +# Building YACReader from source + +YACReader and YACReaderLibrary are build using qmake. To build and install the +program, run: + +> qmake-qt5 CONFIG+=[Options] +> make +> make install + +from the source dir. For seperate builds of YACReader or YACReaderLibrary, +enter their respective subfolders and run the commands from there. + +The headless version of YACReaderLibrary is located in the YACReaderLibraryServer +folder. To build it, enter the folder and run the steps as described above. + + +## Build dependencies: + +- Qt >= 5.3 with the following modules: + - declarative + - quickcontrols + - sql + - script + - multimedia + - imageformats + - opengl + - sql-sqlite + - network + +- A pdf rendering backend (optional, see below) +- qrencode (optional) +- glu +- (lib)unarr (see below) + +Please note that not all of these dependencies are needed at build time. +A good example for this is YACReaderLibrary's GridView mode which will +silently fail and only show a white page if the proper qml modules +(declarative, quickcontrols) are not missing. + +## Backends + +### Decompression + +YACReader uses [(lib)unarr](https://github.com/selmf/unarr) for comic book +decompression. Most Linux distributions don't ship this library yet, so will +probably have to build it yourself. + +We recommend using (lib)unarr as a shared library, but we also support static +and embedded builds. Please consult the [README](compressed_archive/unarr/README.txt) +for more information on this topic. + +### PDF + +Starting with version 9.0.0 YACReader supports the following pdf render engines: + +- poppler (Linux default) +- pdfium (Default for Windows and MacOS) +- pdfkit (macOS only) +- no_pdf (disables pdf support) + +To override the default for a given platform add CONFIG+=[pdfbackend] as an options +when running qmake. + +While the Poppler backend is well tested and has been the standard for YACReader +for a long time, it's performance is a bit lacking. The pdfium engine offers +much better performance (about 10x faster on some pdf files we tested). +However, at the time of this writing, it is not a software that is available +prepackaged for Linux. + +### Other build options: + +You can adjust the installation prefix as well als the path make install uses +to install the files. + +>qmake PREFIX=DIR + +sets the default prefix (for example "/", "/usr", "/usr/local"). + +>make install INSTALL_ROOT=DIR + +can be used to install to a different location, which is usefull for packaging. + +Default values: + +>PREFIX=/usr +>INSTALL_ROOT="" + +On embedded devices that don't support desktop OpenGL, it is recommended to use +the no_opengl config option: + +qmake-qt5 CONFIG+=no_opengl + +This will remove any dependency on desktop OpenGL and hardlock YACReader's +coverflow to software rendering. Please note that it doesn't actually remove +OpenGL from the build, the Qt toolkit will still make use of it. + + +# Feedback and contribution + +If you're compiling YACReader because there is no package available for your +Linux distribution please consider creating and submitting a package or filing a +package request. + +While we do provide packages for .deb based distributions as well as an AUR +package for Archlinux, we are in need of packagers especially for RPM based +distributions. If you are interested, please contact @selmf on the YACReader +forums or write an email to info@yacreader.com + +If you have already created a package please let us know so we can add it to +our downloads list ;) diff --git a/INSTALL.txt b/INSTALL.txt deleted file mode 100644 index 80a95500..00000000 --- a/INSTALL.txt +++ /dev/null @@ -1,111 +0,0 @@ -COMPILATION GUIDE FOR LINUX/UNIX USERS -************************************** - -YACReader and YACReaderLibrary are build using qmake. To build and install the program, run: - -qmake-qt5 CONFIG+=[Options] -make -make install - -from the source dir. For seperate builds of YACReader or YACReaderLibrary, enter their respective subfolders and run the commands from there. - -The headless version of YACReaderLibrary is located in the YACReaderLibraryServer folder. To build it, enter the folder and run the steps as -described above. - - -Dependencies: -------------- - -- Qt >= 5.3 with the following modules: - - declarative - - quickcontrols - - sql - - script - - multimedia - - imageformats - - opengl - - sql-sqlite - - network - -- a pdf rendering backend, poppler-qt5 or pdfium (optional, see below) -- qrencode (optional) -- sqllite -- glu -- a decompression backend, either 7zip or unarr (see below) - -Please note that not all of these dependencies are needed at build time. A good example for this is YACReaderLibrary's GridView mode which will -silently fail and only show a white page if the proper qml modules (declarative, quickcontrols) are not installed. - - -Decompression backend: ----------------------- - -YACReader supports two decompression backends: - -- unarr -- p7zip=9.20.1 - -These can be selected at build time by adding either CONFIG+=unarr or CONFIG+=7zip as an option when running qmake. -If none of these is provided, the build system will default to unarr on Linux/Unix and [p]7zip on Windows and OS X. - -The decompression backends have their own dependencies and require additional steps like downloading additional source code -for setup. Please consult the README files provided in the compressed_archive and compressed_archive/unarr folders for details. - -If you chose to build YACReader with p7zip as a backend on Linux/Unix, please take notice that this backend has some problems: - -- p7zip > 9.20.1 is not supported -- p7zip 9.20.1 has known bugs that are fixed only in the later versions -- a system update that replaces p7zip 9.20.1 with a later version will make YACReader unusable - -If your system already ships with p7zip > 9.20.1 you can place 7z.so and the Codecs folder with the Rar29.so file from p7zip 9.20.1 in /usr/lib/yacreader -YACReader will check this folder first and can thus continue using 7zip as a backend with p7zip > 9.20.1 installed on your system. - - -Pdf backend: ------------- - -Starting with version 8.6.0 YACReader supports the following pdf render backends: - -- poppler (Linux default) -- pdfium -- pdfkit (macOS only, macOS default) -- no_pdf (disables pdf support) - -To select one of them just add CONFIG+=[backend] when running qmake. - -While the Poppler backend is well-tested and has been the standard for YACReader for a long time, its performance is a bit lacking. -Pdfium, the pdf render engine developed by Google's Chromium project and used in the - Chrome browser, offers much better performance (about 10x as fast on some pdf files we tested). -However, at the time of this writing, it isn't easily available as an installable package and a bit challenging to build. -If you are interested in using this backend, you can find further informations on how to proceed in the dependencies subfolder. - - -Other build options: --------------------- - -You can adjust the installation prefix as well als the path make install uses to install the files. -Use "qmake PREFIX=DIR" to configure YACReader for your systems default prefix (for example "/", "/usr", "/usr/local"). - -For packaging purposes, you can use "make install INSTALL_ROOT=DIR" to install to a different location than the prefix. - -Default values: - -PREFIX=/usr -INSTALL_ROOT="" - -On embedded devices that don't support desktop OpenGL, it is recommended to use the no_opengl config option: - -qmake-qt5 CONFIG+=no_opengl - -This will remove any dependency on desktop OpenGL and hardlock YACReader's coverflow to software rendering. Please note that it -doesn't actually remove OpenGL from the build, the Qt toolkit will still make use of it. - - -DO YOU WANT TO HELP YACREADER? -****************************** - -If you're compiling YACReader because there is no package available for your Linux distribution please consider creating and submitting a package. -While we do provide packages for .deb based distributions as well as an AUR package for Archlinux we are in need of packagers especially for RPM based -distributions. If you are interested, please contact selmf on the YACReader forums or write an email to info@yacreader.com - -If you have already created a package for your Linux distribution please let us know so whe can add it to our downloads list ;) \ No newline at end of file diff --git a/YACReader/YACReader.pro b/YACReader/YACReader.pro index 0b0e1338..fa4dc161 100644 --- a/YACReader/YACReader.pro +++ b/YACReader/YACReader.pro @@ -1,262 +1,254 @@ -# ##################################################################### -# Automatically generated by qmake (2.01a) miƩ 8. oct 20:54:05 2008 -# ##################################################################### -TEMPLATE = app -TARGET = YACReader - -QMAKE_TARGET_BUNDLE_PREFIX = "com.yacreader" - -DEPENDPATH += . \ - release - -DEFINES += NOMINMAX YACREADER -QMAKE_MAC_SDK = macosx10.12 - -#load default build flags -include (../config.pri) -include (../dependencies/pdf_backend.pri) - -unix:!macx{ - QMAKE_CXXFLAGS += -std=c++11 +TEMPLATE = app +TARGET = YACReader + +QMAKE_TARGET_BUNDLE_PREFIX = "com.yacreader" + +DEPENDPATH += . \ + release + +DEFINES += NOMINMAX YACREADER +QMAKE_MAC_SDK = macosx10.12 + +#load default build flags +include (../config.pri) +include (../dependencies/pdf_backend.pri) + +unix:!macx{ + QMAKE_CXXFLAGS += -std=c++11 +} + +CONFIG(force_angle) { + contains(QMAKE_TARGET.arch, x86_64) { + Release:DESTDIR = ../release64_angle + Debug:DESTDIR = ../debug64_angle + } else { + Release:DESTDIR = ../release_angle + Debug:DESTDIR = ../debug_angle + } +} else { + contains(QMAKE_TARGET.arch, x86_64) { + Release:DESTDIR = ../release64 + Debug:DESTDIR = ../debug64 + } else { + Release:DESTDIR = ../release + Debug:DESTDIR = ../debug + } +} + +SOURCES += main.cpp + +INCLUDEPATH += ../common \ + ../custom_widgets + +!CONFIG(no_opengl):CONFIG(legacy_gl_widget) { + INCLUDEPATH += ../common/gl_legacy \ +} else { + INCLUDEPATH += ../common/gl \ +} + +#there are going to be two builds for windows, OpenGL based and ANGLE based +win32 { + CONFIG(force_angle) { + message("using ANGLE") + LIBS += -loleaut32 -lole32 -lshell32 -lopengl32 -lglu32 -luser32 + #linking extra libs are necesary for a successful compilation, a better approach should be + #to remove any OpenGL (desktop) dependencies + #the OpenGL stuff should be migrated to OpenGL ES + DEFINES += FORCE_ANGLE + } else { + LIBS += -loleaut32 -lole32 -lshell32 -lopengl32 -lglu32 -luser32 + } + + QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT /GL + QMAKE_LFLAGS_RELEASE += /LTCG + CONFIG -= embed_manifest_exe +} + +unix:!macx:!CONFIG(no_opengl) { + LIBS += -lGLU +} + +macx { + QT += macextras gui-private + CONFIG += objective_c + LIBS += -framework Foundation -framework ApplicationServices -framework AppKit +} + +QT += network widgets core multimedia +!CONFIG(no_opengl) { + QT += opengl +} + +#CONFIG += release +CONFIG -= flat + +# Sources +HEADERS += ../common/comic.h \ + configuration.h \ + goto_dialog.h \ + magnifying_glass.h \ + main_window_viewer.h \ + viewer.h \ + goto_flow.h \ + options_dialog.h \ + ../common/bookmarks.h \ + bookmarks_dialog.h \ + render.h \ + shortcuts_dialog.h \ + translator.h \ + goto_flow_widget.h \ + page_label_widget.h \ + goto_flow_toolbar.h \ + width_slider.h \ + notifications_label_widget.h \ + ../common/pictureflow.h \ + ../common/custom_widgets.h \ + ../common/check_new_version.h \ + ../common/qnaturalsorting.h \ + ../common/yacreader_global.h \ + ../common/yacreader_global_gui.h \ + ../common/onstart_flow_selection_dialog.h \ + ../common/comic_db.h \ + ../common/folder.h \ + ../common/library_item.h \ + yacreader_local_client.h \ + ../common/http_worker.h \ + ../common/exit_check.h \ + ../common/scroll_management.h \ + ../common/opengl_checker.h \ + ../common/pdf_comic.h + +!CONFIG(no_opengl) { + CONFIG(legacy_gl_widget) { + message("Using legacy YACReaderFlowGL (QGLWidget) header") + DEFINES += YACREADER_LEGACY_FLOW_GL + HEADERS += ../common/gl_legacy/yacreader_flow_gl.h + } else { + HEADERS += ../common/gl/yacreader_flow_gl.h + } + HEADERS += goto_flow_gl.h +} + +SOURCES += ../common/comic.cpp \ + configuration.cpp \ + goto_dialog.cpp \ + magnifying_glass.cpp \ + main_window_viewer.cpp \ + viewer.cpp \ + goto_flow.cpp \ + options_dialog.cpp \ + ../common/bookmarks.cpp \ + bookmarks_dialog.cpp \ + render.cpp \ + shortcuts_dialog.cpp \ + translator.cpp \ + goto_flow_widget.cpp \ + page_label_widget.cpp \ + goto_flow_toolbar.cpp \ + width_slider.cpp \ + notifications_label_widget.cpp \ + ../common/pictureflow.cpp \ + ../common/custom_widgets.cpp \ + ../common/check_new_version.cpp \ + ../common/qnaturalsorting.cpp \ + ../common/onstart_flow_selection_dialog.cpp \ + ../common/comic_db.cpp \ + ../common/folder.cpp \ + ../common/library_item.cpp \ + yacreader_local_client.cpp \ + ../common/http_worker.cpp \ + ../common/yacreader_global.cpp \ + ../common/yacreader_global_gui.cpp \ + ../common/exit_check.cpp \ + ../common/scroll_management.cpp \ + ../common/opengl_checker.cpp + +!CONFIG(no_opengl) { + CONFIG(legacy_gl_widget) { + message("using legacy YACReaderFlowGL (QGLWidget) source code") + SOURCES += ../common/gl_legacy/yacreader_flow_gl.cpp + } else { + SOURCES += ../common/gl/yacreader_flow_gl.cpp + } + SOURCES += goto_flow_gl.cpp +} + +include(../custom_widgets/custom_widgets_yacreader.pri) +CONFIG(7zip){ +include(../compressed_archive/wrapper.pri) +} else:CONFIG(unarr){ +include(../compressed_archive/unarr/unarr-wrapper.pri) +} else { + error(No compression backend specified. Did you mess with the build system?) + } +include(../shortcuts_management/shortcuts_management.pri) + +RESOURCES += yacreader_images.qrc \ + yacreader_files.qrc + +win32:RESOURCES += yacreader_images_win.qrc +unix:!macx:RESOURCES += yacreader_images_win.qrc +macx:RESOURCES += yacreader_images_osx.qrc + +include(../QsLog/QsLog.pri) + +RC_FILE = icon.rc + +macx { + ICON = YACReader.icns + QMAKE_INFO_PLIST = Info.plist.mac +} + +TRANSLATIONS = yacreader_es.ts \ + yacreader_fr.ts \ + yacreader_ru.ts \ + yacreader_pt.ts \ + yacreader_nl.ts \ + yacreader_tr.ts \ + yacreader_de.ts \ + yacreader_source.ts + +unix:!macx { +#set install prefix if it's empty +isEmpty(PREFIX) { + PREFIX = /usr +} + +BINDIR = $$PREFIX/bin +LIBDIR = $$PREFIX/lib +DATADIR = $$PREFIX/share + +DEFINES += "LIBDIR=\\\"$$LIBDIR\\\"" "DATADIR=\\\"$$DATADIR\\\"" + +#MAKE INSTALL + +INSTALLS += bin docs icon desktop translation manpage + +bin.path = $$BINDIR +isEmpty(DESTDIR) { + bin.files = YACReader +} else { + bin.files = $$DESTDIR/YACReader +} + +docs.path = $$DATADIR/doc/yacreader + +#rename docs for better packageability +docs.extra = cp ../README.txt ../README +docs.files = ../README ../CHANGELOG.md + +icon.path = $$DATADIR/icons/hicolor/48x48/apps +icon.files = ../YACReader.png + +desktop.path = $$DATADIR/applications +desktop.files = ../YACReader.desktop + +translation.path = $$DATADIR/yacreader/languages +translation.files = ../release/languages/yacreader_* + +manpage.path = $$DATADIR/man/man1 +manpage.files = ../YACReader.1 + +#remove leftover doc files when 'make clean' is invoked +QMAKE_CLEAN += "../README" } - -CONFIG(force_angle) { - Release:DESTDIR = ../release_angle - Debug:DESTDIR = ../debug_angle -} else { - Release:DESTDIR = ../release - Debug:DESTDIR = ../debug -} - -SOURCES += main.cpp - -INCLUDEPATH += ../common \ - ../custom_widgets - -!CONFIG(no_opengl):CONFIG(legacy_gl_widget) { - INCLUDEPATH += ../common/gl_legacy \ -} else { - INCLUDEPATH += ../common/gl \ -} - -#there are going to be two builds for windows, OpenGL based and ANGLE based -win32 { - CONFIG(force_angle) { - message("using ANGLE") - LIBS += -loleaut32 -lole32 -lshell32 -lopengl32 -lglu32 -luser32 - #linking extra libs are necesary for a successful compilation, a better approach should be - #to remove any OpenGL (desktop) dependencies - #the OpenGL stuff should be migrated to OpenGL ES - DEFINES += FORCE_ANGLE - } else { - LIBS += -loleaut32 -lole32 -lshell32 -lopengl32 -lglu32 -luser32 - } - - QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT /GL - QMAKE_LFLAGS_RELEASE += /LTCG - CONFIG -= embed_manifest_exe -} - -unix:!macx:!CONFIG(no_opengl) { - LIBS += -lGLU -} - -macx{ -#INCLUDEPATH += "/Volumes/Mac OS X Lion/usr/X11/include" -#isEqual(QT_MAJOR_VERSION, 5) { -#INCLUDEPATH += /usr/local/include/poppler/qt5 -#LIBS += -L/usr/local/lib -lpoppler-qt5 -#} -#else { -#INCLUDEPATH += /usr/local/include/poppler/qt4 -#LIBS += -L/usr/local/lib -lpoppler-qt4 -#} - -CONFIG += objective_c -QT += macextras gui-private - -LIBS += -framework Foundation -framework ApplicationServices -framework AppKit - -} - -QT += network widgets core -!CONFIG(no_opengl) { - QT += opengl -} - -#CONFIG += release -CONFIG -= flat - -QT += multimedia - -# Input -HEADERS += ../common/comic.h \ - configuration.h \ - goto_dialog.h \ - magnifying_glass.h \ - main_window_viewer.h \ - viewer.h \ - goto_flow.h \ - options_dialog.h \ - ../common/bookmarks.h \ - bookmarks_dialog.h \ - render.h \ - shortcuts_dialog.h \ - translator.h \ - goto_flow_widget.h \ - page_label_widget.h \ - goto_flow_toolbar.h \ - width_slider.h \ - notifications_label_widget.h \ - ../common/pictureflow.h \ - ../common/custom_widgets.h \ - ../common/check_new_version.h \ - ../common/qnaturalsorting.h \ - ../common/yacreader_global.h \ - ../common/yacreader_global_gui.h \ - ../common/onstart_flow_selection_dialog.h \ - ../common/comic_db.h \ - ../common/folder.h \ - ../common/library_item.h \ - yacreader_local_client.h \ - ../common/http_worker.h \ - ../common/exit_check.h \ - ../common/scroll_management.h \ - ../common/opengl_checker.h \ - ../common/pdf_comic.h - -!CONFIG(no_opengl) { - CONFIG(legacy_gl_widget) { - message("using legacy YACReaderFlowGL (QGLWidget) header") - DEFINES += YACREADER_LEGACY_FLOW_GL - HEADERS += ../common/gl_legacy/yacreader_flow_gl.h - } else { - HEADERS += ../common/gl/yacreader_flow_gl.h - } - HEADERS += goto_flow_gl.h -} - -SOURCES += ../common/comic.cpp \ - configuration.cpp \ - goto_dialog.cpp \ - magnifying_glass.cpp \ - main_window_viewer.cpp \ - viewer.cpp \ - goto_flow.cpp \ - options_dialog.cpp \ - ../common/bookmarks.cpp \ - bookmarks_dialog.cpp \ - render.cpp \ - shortcuts_dialog.cpp \ - translator.cpp \ - goto_flow_widget.cpp \ - page_label_widget.cpp \ - goto_flow_toolbar.cpp \ - width_slider.cpp \ - notifications_label_widget.cpp \ - ../common/pictureflow.cpp \ - ../common/custom_widgets.cpp \ - ../common/check_new_version.cpp \ - ../common/qnaturalsorting.cpp \ - ../common/onstart_flow_selection_dialog.cpp \ - ../common/comic_db.cpp \ - ../common/folder.cpp \ - ../common/library_item.cpp \ - yacreader_local_client.cpp \ - ../common/http_worker.cpp \ - ../common/yacreader_global.cpp \ - ../common/yacreader_global_gui.cpp \ - ../common/exit_check.cpp \ - ../common/scroll_management.cpp \ - ../common/opengl_checker.cpp - -!CONFIG(no_opengl) { - CONFIG(legacy_gl_widget) { - message("using legacy YACReaderFlowGL (QGLWidget) source code") - SOURCES += ../common/gl_legacy/yacreader_flow_gl.cpp - } else { - SOURCES += ../common/gl/yacreader_flow_gl.cpp - } - SOURCES += goto_flow_gl.cpp -} - -include(../custom_widgets/custom_widgets_yacreader.pri) -CONFIG(7zip){ -include(../compressed_archive/wrapper.pri) -} else:CONFIG(unarr){ -include(../compressed_archive/unarr/unarr-wrapper.pri) -} else { - error(No compression backend specified. Did you mess with the build system?) - } -include(../shortcuts_management/shortcuts_management.pri) - -RESOURCES += yacreader_images.qrc \ - yacreader_files.qrc - -win32:RESOURCES += yacreader_images_win.qrc -unix:!macx:RESOURCES += yacreader_images_win.qrc -macx:RESOURCES += yacreader_images_osx.qrc - - -include(../QsLog/QsLog.pri) - -RC_FILE = icon.rc - -macx { - ICON = YACReader.icns - QMAKE_INFO_PLIST = Info.plist.mac -} - -TRANSLATIONS = yacreader_es.ts \ - yacreader_fr.ts \ - yacreader_ru.ts \ - yacreader_pt.ts \ - yacreader_nl.ts \ - yacreader_tr.ts \ - yacreader_de.ts \ - yacreader_source.ts - -unix:!macx { -#set install prefix if it's empty -isEmpty(PREFIX) { - PREFIX = /usr -} - -BINDIR = $$PREFIX/bin -LIBDIR = $$PREFIX/lib -DATADIR = $$PREFIX/share - -DEFINES += "LIBDIR=\\\"$$LIBDIR\\\"" "DATADIR=\\\"$$DATADIR\\\"" - -#MAKE INSTALL - -INSTALLS += bin docs icon desktop translation manpage - -bin.path = $$BINDIR -isEmpty(DESTDIR) { - bin.files = YACReader -} else { - bin.files = $$DESTDIR/YACReader -} - -docs.path = $$DATADIR/doc/yacreader - -#rename docs for better packageability -docs.extra = cp ../README.txt ../README -docs.files = ../README ../CHANGELOG.md - -icon.path = $$DATADIR/icons/hicolor/48x48/apps -icon.files = ../YACReader.png - -desktop.path = $$DATADIR/applications -desktop.files = ../YACReader.desktop - -translation.path = $$DATADIR/yacreader/languages -translation.files = ../release/languages/yacreader_* - -manpage.path = $$DATADIR/man/man1 -manpage.files = ../YACReader.1 - -#remove leftover doc files when 'make clean' is invoked -QMAKE_CLEAN += "../README" -} diff --git a/YACReaderLibrary/YACReaderLibrary.pro b/YACReaderLibrary/YACReaderLibrary.pro index 274e1b0c..b50c53e0 100644 --- a/YACReaderLibrary/YACReaderLibrary.pro +++ b/YACReaderLibrary/YACReaderLibrary.pro @@ -1,328 +1,322 @@ -###################################################################### -# Automatically generated by qmake (2.01a) dom 12. oct 20:47:48 2008 -###################################################################### - -TEMPLATE = app -TARGET = YACReaderLibrary - -QMAKE_TARGET_BUNDLE_PREFIX = "com.yacreader" - -DEPENDPATH += . -INCLUDEPATH += . -INCLUDEPATH += ../common \ - ./server \ - ./db \ - ../custom_widgets \ - ./comic_vine \ - ./comic_vine/model - -DEFINES += SERVER_RELEASE NOMINMAX YACREADER_LIBRARY -QMAKE_MAC_SDK = macosx10.12 -#load default build flags -include (../config.pri) -include (../dependencies/pdf_backend.pri) - -CONFIG(legacy_gl_widget) { - INCLUDEPATH += ../common/gl_legacy \ -} else { - INCLUDEPATH += ../common/gl \ -} - -#there are going to be two builds for windows, OpenGL based and ANGLE based -win32 { - CONFIG(force_angle) { - message("using ANGLE") - LIBS += -loleaut32 -lole32 -lshell32 -lopengl32 -lglu32 -luser32 - #linking extra libs are necesary for a successful compilation, a better approach should be - #to remove any OpenGL (desktop) dependencies - #the OpenGL stuff should be migrated to OpenGL ES - DEFINES += FORCE_ANGLE - } else { - LIBS += -loleaut32 -lole32 -lshell32 -lopengl32 -lglu32 -luser32 - } - - QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT /GL - QMAKE_LFLAGS_RELEASE += /LTCG - CONFIG -= embed_manifest_exe -} - -unix:!macx{ - -!CONFIG(no_opengl) { - LIBS += -lGLU - } -} - -macx{ -#INCLUDEPATH += "/Volumes/Mac OS X Lion/usr/X11/include" -#isEqual(QT_MAJOR_VERSION, 5) { -#INCLUDEPATH += /usr/local/include/poppler/qt5 -#LIBS += -L/usr/local/lib -lpoppler-qt5 -#} -#else { -#INCLUDEPATH += /usr/local/include/poppler/qt4 -#LIBS += -L/usr/local/lib -lpoppler-qt4 -#} -#QT += macextras - -LIBS += -framework Foundation -framework ApplicationServices -framework AppKit - -CONFIG += objective_c -QT += macextras gui-private -} - -unix{ -CONFIG += c++11 -} - -#CONFIG += release -CONFIG -= flat -QT += sql network widgets script -!CONFIG(no_opengl) { - QT += opengl -} - -# Input -HEADERS += comic_flow.h \ - create_library_dialog.h \ - library_creator.h \ - library_window.h \ - add_library_dialog.h \ - rename_library_dialog.h \ - properties_dialog.h \ - options_dialog.h \ - export_library_dialog.h \ - import_library_dialog.h \ - package_manager.h \ - bundle_creator.h \ - export_comics_info_dialog.h \ - import_comics_info_dialog.h \ - server_config_dialog.h \ - comic_flow_widget.h \ - db_helper.h \ - ./db/data_base_management.h \ - ./db/folder_item.h \ - ./db/folder_model.h \ - ./db/comic_model.h \ - ./db/comic_item.h \ - ../common/comic_db.h \ - ../common/folder.h \ - ../common/library_item.h \ - ../common/comic.h \ - ../common/bookmarks.h \ - ../common/pictureflow.h \ - ../common/custom_widgets.h \ - ../common/qnaturalsorting.h \ - ../common/yacreader_global.h \ - ../common/yacreader_global_gui.h \ - ../common/onstart_flow_selection_dialog.h \ - ../common/pdf_comic.h \ - no_libraries_widget.h \ - import_widget.h \ - yacreader_local_server.h \ - yacreader_main_toolbar.h \ - comics_remover.h \ - ../common/http_worker.h \ - yacreader_libraries.h \ - ../common/exit_check.h \ - comics_view.h \ - classic_comics_view.h \ - empty_folder_widget.h \ - no_search_results_widget.h \ - comic_files_manager.h \ - db/reading_list_model.h \ - db/reading_list_item.h \ - yacreader_folders_view.h \ - yacreader_reading_lists_view.h \ - add_label_dialog.h \ - yacreader_history_controller.h \ - yacreader_navigation_controller.h \ - empty_label_widget.h \ - empty_container_info.h \ - empty_special_list.h \ - empty_reading_list_widget.h \ - ../common/scroll_management.h \ - ../common/opengl_checker.h \ - yacreader_comics_views_manager.h \ - info_comics_view.h \ - yacreader_comics_selection_helper.h \ - yacreader_comic_info_helper.h - -!CONFIG(no_opengl) { - CONFIG(legacy_gl_widget) { - message("using legacy YACReaderFlowGL (QGLWidget) header") - HEADERS += ../common/gl_legacy/yacreader_flow_gl.h - } else { - HEADERS += ../common/gl/yacreader_flow_gl.h - } -} - -SOURCES += comic_flow.cpp \ - create_library_dialog.cpp \ - library_creator.cpp \ - library_window.cpp \ - main.cpp \ - add_library_dialog.cpp \ - rename_library_dialog.cpp \ - properties_dialog.cpp \ - options_dialog.cpp \ - export_library_dialog.cpp \ - import_library_dialog.cpp \ - package_manager.cpp \ - bundle_creator.cpp \ - export_comics_info_dialog.cpp \ - import_comics_info_dialog.cpp \ - server_config_dialog.cpp \ - comic_flow_widget.cpp \ - db_helper.cpp \ - ./db/data_base_management.cpp \ - ./db/folder_item.cpp \ - ./db/folder_model.cpp \ - ./db/comic_model.cpp \ - ./db/comic_item.cpp \ - ../common/comic_db.cpp \ - ../common/folder.cpp \ - ../common/library_item.cpp \ - ../common/comic.cpp \ - ../common/bookmarks.cpp \ - ../common/pictureflow.cpp \ - ../common/custom_widgets.cpp \ - ../common/qnaturalsorting.cpp \ - ../common/onstart_flow_selection_dialog.cpp \ - no_libraries_widget.cpp \ - import_widget.cpp \ - yacreader_local_server.cpp \ - yacreader_main_toolbar.cpp \ - comics_remover.cpp \ - ../common/http_worker.cpp \ - ../common/yacreader_global.cpp \ - ../common/yacreader_global_gui.cpp \ - yacreader_libraries.cpp \ - ../common/exit_check.cpp \ - comics_view.cpp \ - classic_comics_view.cpp \ - empty_folder_widget.cpp \ - no_search_results_widget.cpp \ - comic_files_manager.cpp \ - db/reading_list_model.cpp \ - db/reading_list_item.cpp \ - yacreader_folders_view.cpp \ - yacreader_reading_lists_view.cpp \ - add_label_dialog.cpp \ - yacreader_history_controller.cpp \ - yacreader_navigation_controller.cpp \ - empty_label_widget.cpp \ - empty_container_info.cpp \ - empty_special_list.cpp \ - empty_reading_list_widget.cpp \ - ../common/scroll_management.cpp \ - ../common/opengl_checker.cpp \ - yacreader_comics_views_manager.cpp \ - info_comics_view.cpp \ - yacreader_comics_selection_helper.cpp \ - yacreader_comic_info_helper.cpp - -!CONFIG(no_opengl) { - CONFIG(legacy_gl_widget) { - message("using legacy YACReaderFlowGL (QGLWidget) source code") - SOURCES += ../common/gl_legacy/yacreader_flow_gl.cpp - } else { - SOURCES += ../common/gl/yacreader_flow_gl.cpp - } -} - - -include(./server/server.pri) -include(../custom_widgets/custom_widgets_yacreaderlibrary.pri) -CONFIG(7zip){ -include(../compressed_archive/wrapper.pri) -} else:CONFIG(unarr) { -include(../compressed_archive/unarr/unarr-wrapper.pri) -} else { - error(No compression backend specified. Did you mess with the build system?) -} - -include(./comic_vine/comic_vine.pri) -include(../QsLog/QsLog.pri) -include(../shortcuts_management/shortcuts_management.pri) - -RESOURCES += images.qrc files.qrc -win32:RESOURCES += images_win.qrc -unix:!macx:RESOURCES += images_win.qrc -macx:RESOURCES += images_osx.qrc - -RC_FILE = icon.rc - -macx { - ICON = YACReaderLibrary.icns -} - -TRANSLATIONS = yacreaderlibrary_es.ts \ - yacreaderlibrary_ru.ts \ - yacreaderlibrary_pt.ts \ - yacreaderlibrary_fr.ts \ - yacreaderlibrary_nl.ts \ - yacreaderlibrary_tr.ts \ - yacreaderlibrary_de.ts \ - yacreaderlibrary_source.ts - -CONFIG(force_angle) { - Release:DESTDIR = ../release_angle - Debug:DESTDIR = ../debug_angle -} else { - Release:DESTDIR = ../release - Debug:DESTDIR = ../debug -} - -#QML/GridView -QT += quick qml - -HEADERS += grid_comics_view.h \ - comics_view_transition.h - -SOURCES += grid_comics_view.cpp \ - comics_view_transition.cpp - -RESOURCES += qml.qrc -win32:RESOURCES += qml_win.qrc -unix:!macx:RESOURCES += qml_win.qrc -macx:RESOURCES += qml_osx.qrc - -unix:!macx { -#set install prefix if it's empty -isEmpty(PREFIX) { - PREFIX = /usr -} - -BINDIR = $$PREFIX/bin -LIBDIR = $$PREFIX/lib -DATADIR = $$PREFIX/share - -DEFINES += "LIBDIR=\\\"$$LIBDIR\\\"" "DATADIR=\\\"$$DATADIR\\\"" "BINDIR=\\\"$$BINDIR\\\"" - -#MAKE INSTALL -INSTALLS += bin icon desktop server translation manpage - -bin.path = $$BINDIR -isEmpty(DESTDIR) { - bin.files = YACReaderLibrary -} else { - bin.files = $$DESTDIR/YACReaderLibrary -} - -server.path = $$DATADIR/yacreader -server.files = ../release/server - -icon.path = $$DATADIR/icons/hicolor/48x48/apps -icon.files = ../YACReaderLibrary.png - -desktop.path = $$DATADIR/applications -desktop.files = ../YACReaderLibrary.desktop -#TODO: icons should be located at /usr/share/icons and have the same basename as their application - -translation.path = $$DATADIR/yacreader/languages -translation.files = ../release/languages/yacreaderlibrary_* - -manpage.path = $$DATADIR/man/man1 -manpage.files = ../YACReaderLibrary.1 -} +TEMPLATE = app +TARGET = YACReaderLibrary + +QMAKE_TARGET_BUNDLE_PREFIX = "com.yacreader" + +DEPENDPATH += . +INCLUDEPATH += . \ + ../common \ + ./server \ + ./db \ + ../custom_widgets \ + ./comic_vine \ + ./comic_vine/model + +DEFINES += SERVER_RELEASE NOMINMAX YACREADER_LIBRARY +QMAKE_MAC_SDK = macosx10.12 + +# load default build flags +include (../config.pri) +include (../dependencies/pdf_backend.pri) + +CONFIG(legacy_gl_widget) { + INCLUDEPATH += ../common/gl_legacy \ +} else { + INCLUDEPATH += ../common/gl \ +} + +# there are two builds for Windows, Desktop OpenGL based and ANGLE OpenGL ES based +win32 { + CONFIG(force_angle) { + message("using ANGLE") + LIBS += -loleaut32 -lole32 -lshell32 -lopengl32 -lglu32 -luser32 + # linking extra libs are necesary for a successful compilation, a better approach should be + # to remove any OpenGL (desktop) dependencies + # the OpenGL stuff should be migrated to OpenGL ES + DEFINES += FORCE_ANGLE + } else { + LIBS += -loleaut32 -lole32 -lshell32 -lopengl32 -lglu32 -luser32 + } + + QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT /GL + QMAKE_LFLAGS_RELEASE += /LTCG + CONFIG -= embed_manifest_exe +} + +CONFIG(force_angle) { + contains(QMAKE_TARGET.arch, x86_64) { + Release:DESTDIR = ../release64_angle + Debug:DESTDIR = ../debug64_angle + } else { + Release:DESTDIR = ../release_angle + Debug:DESTDIR = ../debug_angle + } +} else { + contains(QMAKE_TARGET.arch, x86_64) { + Release:DESTDIR = ../release64 + Debug:DESTDIR = ../debug64 + } else { + Release:DESTDIR = ../release + Debug:DESTDIR = ../debug + } +} + +unix:!macx:!CONFIG(no_opengl) { + LIBS += -lGLU +} + +macx { + +LIBS += -framework Foundation -framework ApplicationServices -framework AppKit + +CONFIG += objective_c +QT += macextras gui-private +} + +unix:!macx { + CONFIG += c++11 +} + +#CONFIG += release +CONFIG -= flat +QT += sql network widgets script +!CONFIG(no_opengl) { + QT += opengl +} + +# Input +HEADERS += comic_flow.h \ + create_library_dialog.h \ + library_creator.h \ + library_window.h \ + add_library_dialog.h \ + rename_library_dialog.h \ + properties_dialog.h \ + options_dialog.h \ + export_library_dialog.h \ + import_library_dialog.h \ + package_manager.h \ + bundle_creator.h \ + export_comics_info_dialog.h \ + import_comics_info_dialog.h \ + server_config_dialog.h \ + comic_flow_widget.h \ + db_helper.h \ + ./db/data_base_management.h \ + ./db/folder_item.h \ + ./db/folder_model.h \ + ./db/comic_model.h \ + ./db/comic_item.h \ + ../common/comic_db.h \ + ../common/folder.h \ + ../common/library_item.h \ + ../common/comic.h \ + ../common/bookmarks.h \ + ../common/pictureflow.h \ + ../common/custom_widgets.h \ + ../common/qnaturalsorting.h \ + ../common/yacreader_global.h \ + ../common/yacreader_global_gui.h \ + ../common/onstart_flow_selection_dialog.h \ + ../common/pdf_comic.h \ + no_libraries_widget.h \ + import_widget.h \ + yacreader_local_server.h \ + yacreader_main_toolbar.h \ + comics_remover.h \ + ../common/http_worker.h \ + yacreader_libraries.h \ + ../common/exit_check.h \ + comics_view.h \ + classic_comics_view.h \ + empty_folder_widget.h \ + no_search_results_widget.h \ + comic_files_manager.h \ + db/reading_list_model.h \ + db/reading_list_item.h \ + yacreader_folders_view.h \ + yacreader_reading_lists_view.h \ + add_label_dialog.h \ + yacreader_history_controller.h \ + yacreader_navigation_controller.h \ + empty_label_widget.h \ + empty_container_info.h \ + empty_special_list.h \ + empty_reading_list_widget.h \ + ../common/scroll_management.h \ + ../common/opengl_checker.h \ + yacreader_comics_views_manager.h \ + info_comics_view.h \ + yacreader_comics_selection_helper.h \ + yacreader_comic_info_helper.h + +!CONFIG(no_opengl) { + CONFIG(legacy_gl_widget) { + message("using legacy YACReaderFlowGL (QGLWidget) header") + HEADERS += ../common/gl_legacy/yacreader_flow_gl.h + } else { + HEADERS += ../common/gl/yacreader_flow_gl.h + } +} + +SOURCES += comic_flow.cpp \ + create_library_dialog.cpp \ + library_creator.cpp \ + library_window.cpp \ + main.cpp \ + add_library_dialog.cpp \ + rename_library_dialog.cpp \ + properties_dialog.cpp \ + options_dialog.cpp \ + export_library_dialog.cpp \ + import_library_dialog.cpp \ + package_manager.cpp \ + bundle_creator.cpp \ + export_comics_info_dialog.cpp \ + import_comics_info_dialog.cpp \ + server_config_dialog.cpp \ + comic_flow_widget.cpp \ + db_helper.cpp \ + ./db/data_base_management.cpp \ + ./db/folder_item.cpp \ + ./db/folder_model.cpp \ + ./db/comic_model.cpp \ + ./db/comic_item.cpp \ + ../common/comic_db.cpp \ + ../common/folder.cpp \ + ../common/library_item.cpp \ + ../common/comic.cpp \ + ../common/bookmarks.cpp \ + ../common/pictureflow.cpp \ + ../common/custom_widgets.cpp \ + ../common/qnaturalsorting.cpp \ + ../common/onstart_flow_selection_dialog.cpp \ + no_libraries_widget.cpp \ + import_widget.cpp \ + yacreader_local_server.cpp \ + yacreader_main_toolbar.cpp \ + comics_remover.cpp \ + ../common/http_worker.cpp \ + ../common/yacreader_global.cpp \ + ../common/yacreader_global_gui.cpp \ + yacreader_libraries.cpp \ + ../common/exit_check.cpp \ + comics_view.cpp \ + classic_comics_view.cpp \ + empty_folder_widget.cpp \ + no_search_results_widget.cpp \ + comic_files_manager.cpp \ + db/reading_list_model.cpp \ + db/reading_list_item.cpp \ + yacreader_folders_view.cpp \ + yacreader_reading_lists_view.cpp \ + add_label_dialog.cpp \ + yacreader_history_controller.cpp \ + yacreader_navigation_controller.cpp \ + empty_label_widget.cpp \ + empty_container_info.cpp \ + empty_special_list.cpp \ + empty_reading_list_widget.cpp \ + ../common/scroll_management.cpp \ + ../common/opengl_checker.cpp \ + yacreader_comics_views_manager.cpp \ + info_comics_view.cpp \ + yacreader_comics_selection_helper.cpp \ + yacreader_comic_info_helper.cpp + +!CONFIG(no_opengl) { + CONFIG(legacy_gl_widget) { + message("using legacy YACReaderFlowGL (QGLWidget) source code") + SOURCES += ../common/gl_legacy/yacreader_flow_gl.cpp + } else { + SOURCES += ../common/gl/yacreader_flow_gl.cpp + } +} + + +include(./server/server.pri) +include(../custom_widgets/custom_widgets_yacreaderlibrary.pri) + +CONFIG(7zip){ +include(../compressed_archive/wrapper.pri) +} else:CONFIG(unarr) { +include(../compressed_archive/unarr/unarr-wrapper.pri) +} else { + error(No compression backend specified. Did you mess with the build system?) +} + +include(./comic_vine/comic_vine.pri) +include(../QsLog/QsLog.pri) +include(../shortcuts_management/shortcuts_management.pri) + +RESOURCES += images.qrc files.qrc +win32:RESOURCES += images_win.qrc +unix:!macx:RESOURCES += images_win.qrc +macx:RESOURCES += images_osx.qrc + +RC_FILE = icon.rc + +macx { + ICON = YACReaderLibrary.icns +} + +TRANSLATIONS = yacreaderlibrary_es.ts \ + yacreaderlibrary_ru.ts \ + yacreaderlibrary_pt.ts \ + yacreaderlibrary_fr.ts \ + yacreaderlibrary_nl.ts \ + yacreaderlibrary_tr.ts \ + yacreaderlibrary_de.ts \ + yacreaderlibrary_source.ts + +#QML/GridView +QT += quick qml + +HEADERS += grid_comics_view.h \ + comics_view_transition.h + +SOURCES += grid_comics_view.cpp \ + comics_view_transition.cpp + +RESOURCES += qml.qrc +win32:RESOURCES += qml_win.qrc +unix:!macx:RESOURCES += qml_win.qrc +macx:RESOURCES += qml_osx.qrc + +unix:!macx { +#set install prefix if it's empty +isEmpty(PREFIX) { + PREFIX = /usr +} + +BINDIR = $$PREFIX/bin +LIBDIR = $$PREFIX/lib +DATADIR = $$PREFIX/share + +DEFINES += "LIBDIR=\\\"$$LIBDIR\\\"" "DATADIR=\\\"$$DATADIR\\\"" "BINDIR=\\\"$$BINDIR\\\"" + +#MAKE INSTALL +INSTALLS += bin icon desktop server translation manpage + +bin.path = $$BINDIR +isEmpty(DESTDIR) { + bin.files = YACReaderLibrary +} else { + bin.files = $$DESTDIR/YACReaderLibrary +} + +server.path = $$DATADIR/yacreader +server.files = ../release/server + +icon.path = $$DATADIR/icons/hicolor/48x48/apps +icon.files = ../YACReaderLibrary.png + +desktop.path = $$DATADIR/applications +desktop.files = ../YACReaderLibrary.desktop + +translation.path = $$DATADIR/yacreader/languages +translation.files = ../release/languages/yacreaderlibrary_* + +manpage.path = $$DATADIR/man/man1 +manpage.files = ../YACReaderLibrary.1 +} diff --git a/YACReaderLibraryServer/YACReaderLibraryServer.pro b/YACReaderLibraryServer/YACReaderLibraryServer.pro index 59e8ad18..89b2036e 100644 --- a/YACReaderLibraryServer/YACReaderLibraryServer.pro +++ b/YACReaderLibraryServer/YACReaderLibraryServer.pro @@ -1,154 +1,156 @@ -###################################################################### -# Automatically generated by qmake (2.01a) dom 12. oct 20:47:48 2008 -###################################################################### - -TEMPLATE = app -TARGET = YACReaderLibraryServer - -QMAKE_TARGET_BUNDLE_PREFIX = "com.yacreader" - -CONFIG += console -DEPENDPATH += ../YACReaderLibrary -INCLUDEPATH += ../YACReaderLibrary -INCLUDEPATH += ../common \ - ../YACReaderLibrary/server \ - ../YACReaderLibrary/db - -DEFINES += SERVER_RELEASE NOMINMAX YACREADER_LIBRARY QT_NO_DEBUG_OUTPUT -QMAKE_MAC_SDK = macosx10.12 -#load default build flags -#do a basic dependency check -include(headless_config.pri) -include(../dependencies/pdf_backend.pri) - -win32 { - LIBS += -loleaut32 -lole32 -lshell32 -luser32 - QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT /GL - QMAKE_LFLAGS_RELEASE += /LTCG - CONFIG -= embed_manifest_exe -} - -macx { - LIBS += -framework Foundation -framework ApplicationServices -framework AppKit - CONFIG += objective_c -} - -unix { - CONFIG += c++11 -} - -#CONFIG += release -CONFIG -= flat -QT += core sql network - -# Input -HEADERS += ../YACReaderLibrary/library_creator.h \ - ../YACReaderLibrary/package_manager.h \ - ../YACReaderLibrary/bundle_creator.h \ - ../YACReaderLibrary/db_helper.h \ - ../YACReaderLibrary/db/data_base_management.h \ - ../common/comic_db.h \ - ../common/folder.h \ - ../common/library_item.h \ - ../common/comic.h \ - ../common/pdf_comic.h \ - ../common/bookmarks.h \ - ../common/qnaturalsorting.h \ - ../common/yacreader_global.h \ - ../YACReaderLibrary/yacreader_local_server.h \ - ../YACReaderLibrary/comics_remover.h \ - ../common/http_worker.h \ - ../YACReaderLibrary/yacreader_libraries.h \ - ../YACReaderLibrary/comic_files_manager.h \ - console_ui_library_creator.h - - -SOURCES += ../YACReaderLibrary/library_creator.cpp \ - ../YACReaderLibrary/package_manager.cpp \ - ../YACReaderLibrary/bundle_creator.cpp \ - ../YACReaderLibrary/db_helper.cpp \ - ../YACReaderLibrary/db/data_base_management.cpp \ - ../common/comic_db.cpp \ - ../common/folder.cpp \ - ../common/library_item.cpp \ - ../common/comic.cpp \ - ../common/bookmarks.cpp \ - ../common/qnaturalsorting.cpp \ - ../YACReaderLibrary/yacreader_local_server.cpp \ - ../YACReaderLibrary/comics_remover.cpp \ - ../common/http_worker.cpp \ - ../common/yacreader_global.cpp \ - ../YACReaderLibrary/yacreader_libraries.cpp \ - ../YACReaderLibrary/comic_files_manager.cpp \ - console_ui_library_creator.cpp \ - main.cpp - -include(../YACReaderLibrary/server/server.pri) -CONFIG(7zip){ -include(../compressed_archive/wrapper.pri) -} else:CONFIG(unarr) { -include(../compressed_archive/unarr/unarr-wrapper.pri) -} else { - error(No compression backend specified. Did you mess with the build system?) -} -include(../QsLog/QsLog.pri) - - -TRANSLATIONS = yacreaderlibraryserver_es.ts \ - yacreaderlibraryserver_ru.ts \ - yacreaderlibraryserver_pt.ts \ - yacreaderlibraryserver_fr.ts \ - yacreaderlibraryserver_nl.ts \ - yacreaderlibraryserver_tr.ts \ - yacreaderlibraryserver_de.ts \ - yacreaderlibraryserver_source.ts - - -RESOURCES += images.qrc - - -Release:DESTDIR = ../release -Debug:DESTDIR = ../debug - - -unix:!macx { -#set install prefix if it's empty -isEmpty(PREFIX) { - PREFIX = /usr -} - -BINDIR = $$PREFIX/bin -LIBDIR = $$PREFIX/lib -DATADIR = $$PREFIX/share - -DEFINES += "LIBDIR=\\\"$$LIBDIR\\\"" "DATADIR=\\\"$$DATADIR\\\"" "BINDIR=\\\"$$BINDIR\\\"" - -#MAKE INSTALL -CONFIG(server_standalone) { - INSTALLS += bin server translation -} -else:CONFIG(server_bundled) { - INSTALLS += bin -} -else { - INSTALLS += bin server translation - message("No build type specified. Defaulting to standalone server build (CONFIG+=server_standalone).") - message("If you wish to run YACReaderLibraryServer on a system with an existing install of YACReaderLibrary, please specify CONFIG+=server_bundled as an option when running qmake.") -} - -bin.path = $$BINDIR -isEmpty(DESTDIR) { - bin.files = YACReaderLibraryServer -} else { - bin.files = $$DESTDIR/YACReaderLibraryServer -} - -server.path = $$DATADIR/yacreader -server.files = ../release/server - -translation.path = $$DATADIR/yacreader/languages -translation.files = ../release/languages/yacreaderlibrary_* - -#manpage.path = $$DATADIR/man/man1 -#manpage.files = ../YACReaderLibrary.1 -} \ No newline at end of file +TEMPLATE = app +TARGET = YACReaderLibraryServer + +QMAKE_TARGET_BUNDLE_PREFIX = "com.yacreader" + +CONFIG += console +DEPENDPATH += ../YACReaderLibrary +INCLUDEPATH += ../YACReaderLibrary \ + ../common \ + ../YACReaderLibrary/server \ + ../YACReaderLibrary/db + +DEFINES += SERVER_RELEASE NOMINMAX YACREADER_LIBRARY QT_NO_DEBUG_OUTPUT +QMAKE_MAC_SDK = macosx10.12 +# load default build flags +# do a basic dependency check +include(headless_config.pri) +include(../dependencies/pdf_backend.pri) + +win32 { + LIBS += -loleaut32 -lole32 -lshell32 -luser32 + QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT /GL + QMAKE_LFLAGS_RELEASE += /LTCG + CONFIG -= embed_manifest_exe +} + +macx { + LIBS += -framework Foundation -framework ApplicationServices -framework AppKit + CONFIG += objective_c +} + +unix { + CONFIG += c++11 +} + +#CONFIG += release +CONFIG -= flat +QT += core sql network + +# Source files +HEADERS += ../YACReaderLibrary/library_creator.h \ + ../YACReaderLibrary/package_manager.h \ + ../YACReaderLibrary/bundle_creator.h \ + ../YACReaderLibrary/db_helper.h \ + ../YACReaderLibrary/db/data_base_management.h \ + ../common/comic_db.h \ + ../common/folder.h \ + ../common/library_item.h \ + ../common/comic.h \ + ../common/pdf_comic.h \ + ../common/bookmarks.h \ + ../common/qnaturalsorting.h \ + ../common/yacreader_global.h \ + ../YACReaderLibrary/yacreader_local_server.h \ + ../YACReaderLibrary/comics_remover.h \ + ../common/http_worker.h \ + ../YACReaderLibrary/yacreader_libraries.h \ + ../YACReaderLibrary/comic_files_manager.h \ + console_ui_library_creator.h + + +SOURCES += ../YACReaderLibrary/library_creator.cpp \ + ../YACReaderLibrary/package_manager.cpp \ + ../YACReaderLibrary/bundle_creator.cpp \ + ../YACReaderLibrary/db_helper.cpp \ + ../YACReaderLibrary/db/data_base_management.cpp \ + ../common/comic_db.cpp \ + ../common/folder.cpp \ + ../common/library_item.cpp \ + ../common/comic.cpp \ + ../common/bookmarks.cpp \ + ../common/qnaturalsorting.cpp \ + ../YACReaderLibrary/yacreader_local_server.cpp \ + ../YACReaderLibrary/comics_remover.cpp \ + ../common/http_worker.cpp \ + ../common/yacreader_global.cpp \ + ../YACReaderLibrary/yacreader_libraries.cpp \ + ../YACReaderLibrary/comic_files_manager.cpp \ + console_ui_library_creator.cpp \ + main.cpp + +include(../YACReaderLibrary/server/server.pri) +CONFIG(7zip) { +include(../compressed_archive/wrapper.pri) +} else:CONFIG(unarr) { +include(../compressed_archive/unarr/unarr-wrapper.pri) +} else { + error(No compression backend specified. Did you mess with the build system?) +} +include(../QsLog/QsLog.pri) + +TRANSLATIONS = yacreaderlibraryserver_es.ts \ + yacreaderlibraryserver_ru.ts \ + yacreaderlibraryserver_pt.ts \ + yacreaderlibraryserver_fr.ts \ + yacreaderlibraryserver_nl.ts \ + yacreaderlibraryserver_tr.ts \ + yacreaderlibraryserver_de.ts \ + yacreaderlibraryserver_source.ts + +RESOURCES += images.qrc + +contains(QMAKE_TARGET.arch, x86_64) { + Release:DESTDIR = ../release64 + Debug:DESTDIR = ../debug64 +} else { + Release:DESTDIR = ../release + Debug:DESTDIR = ../debug +} + +unix:!macx { +#set install prefix if it's empty +isEmpty(PREFIX) { + PREFIX = /usr +} + +BINDIR = $$PREFIX/bin +LIBDIR = $$PREFIX/lib +DATADIR = $$PREFIX/share + +DEFINES += "LIBDIR=\\\"$$LIBDIR\\\"" "DATADIR=\\\"$$DATADIR\\\"" "BINDIR=\\\"$$BINDIR\\\"" + +#make install +CONFIG(server_standalone) { + INSTALLS += bin server translation systemd +} +else:CONFIG(server_bundled) { + INSTALLS += bin systemd +} +else { + INSTALLS += bin server translation systemd + message("No build type specified. Defaulting to standalone server build (CONFIG+=server_standalone).") + message("If you wish to run YACReaderLibraryServer on a system with an existing install of YACReaderLibrary,\ + please specify CONFIG+=server_bundled as an option when running qmake.") +} + +bin.path = $$BINDIR +isEmpty(DESTDIR) { + bin.files = YACReaderLibraryServer +} else { + bin.files = $$DESTDIR/YACReaderLibraryServer +} + +server.path = $$DATADIR/yacreader +server.files = ../release/server + +systemd.path = $$LIBDIR/systemd/system +systemd.files = yacreaderlibraryserver.service + +translation.path = $$DATADIR/yacreader/languages +translation.files = ../release/languages/yacreaderlibrary_* + +# TODO: We need a manpage for yaclibserver +#manpage.path = $$DATADIR/man/man1 +#manpage.files = ../YACReaderLibrary.1 +} diff --git a/YACReaderLibraryServer/yacreaderlibraryserver.service b/YACReaderLibraryServer/yacreaderlibraryserver.service new file mode 100644 index 00000000..c8f6ab30 --- /dev/null +++ b/YACReaderLibraryServer/yacreaderlibraryserver.service @@ -0,0 +1,11 @@ +[Unit] +Description=YACReaderLibrary headless server +After=network.target + +[Service] +Type=simple +Restart=always +ExecStart=/usr/bin/YACReaderLibraryServer start + +[Install] +WantedBy=multi-user.target diff --git a/compressed_archive/unarr/unarr-wrapper.pri b/compressed_archive/unarr/unarr-wrapper.pri index 4f54e409..b36c874d 100644 --- a/compressed_archive/unarr/unarr-wrapper.pri +++ b/compressed_archive/unarr/unarr-wrapper.pri @@ -2,44 +2,46 @@ INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/extract_delegate.h \ - $$PWD/compressed_archive.h \ + $$PWD/compressed_archive.h -SOURCES += $$PWD/compressed_archive.cpp \ +SOURCES += $$PWD/compressed_archive.cpp -unix:!macx { - message(Using system provided unarr installation) - CONFIG += link_pkgconfig - PKGCONFIG += libunarr - DEFINES += use_unarr - } -else:macx:exists (../../dependencies/unarr/macx/libunarr.a) { - message(Found prebuilt unarr library in dependencies directory.) - INCLUDEPATH += $$PWD/../../dependencies/unarr/macx - LIBS += -L$$PWD/../../dependencies/unarr/macx -lunarr -lz -lbz2 - DEFINES+=use_unarr - } +unix:!macx:packagesExist(libunarr) { + message(Using system provided unarr installation) + CONFIG += link_pkgconfig + PKGCONFIG += libunarr + DEFINES += use_unarr + } -else:win32:exists (../../dependencies/unarr/win/unarr.h) { - message(Found prebuilt unarr library in dependencies directory.) - INCLUDEPATH += $$PWD/../../dependencies/unarr/win - contains(QMAKE_TARGET.arch, x86_64): { - LIBS += -L$$PWD/../../dependencies/unarr/win/x64 -lunarr - } else { - LIBS += -L$$PWD/../../dependencies/unarr/win/x86 -lunarr - } - DEFINES+=use_unarr UNARR_IS_SHARED_LIBRARY - } +else:macx:exists(../../dependencies/unarr/macx/libunarr.a) { + message(Found prebuilt unarr library in dependencies directory.) + INCLUDEPATH += $$PWD/../../dependencies/unarr/macx + LIBS += -L$$PWD/../../dependencies/unarr/macx -lunarr -lz -lbz2 + DEFINES += use_unarr + } + +else:win32:exists(../../dependencies/unarr/win/unarr.h) { + message(Found prebuilt unarr library in dependencies directory.) + INCLUDEPATH += $$PWD/../../dependencies/unarr/win + contains(QMAKE_TARGET.arch, x86_64): { + LIBS += -L$$PWD/../../dependencies/unarr/win/x64 -lunarr + } else { + LIBS += -L$$PWD/../../dependencies/unarr/win/x86 -lunarr + } + DEFINES += use_unarr UNARR_IS_SHARED_LIBRARY + } else:exists ($$PWD/unarr-master) { - message(Found unarr source-code) - message(Unarr will be build as a part of YACReader) + message(Found unarr source-code) + message(Unarr will be build as a part of YACReader) + + # qmake based unarr build system + # this should only be used for testing or as a last resort + include(unarr.pro) + DEFINES += use_unarr + } - #qmake based unarr build system - #this should only be used for testing or as a last resort - include(unarr.pro) - DEFINES+=use_unarr - } else { - error(Missing dependency: unarr decrompression backend. Please install libunarr on your system\ - or provide a copy of the unarr source code in compressed_archive/unarr/unarr-master) - } + error(Missing dependency: unarr decrompression backend. Please install libunarr on your system\ + or provide a copy of the unarr source code in compressed_archive/unarr/unarr-master) + } diff --git a/dependencies/pdf_backend.pri b/dependencies/pdf_backend.pri index dd6620d7..3d6b745f 100644 --- a/dependencies/pdf_backend.pri +++ b/dependencies/pdf_backend.pri @@ -1,56 +1,68 @@ CONFIG(no_pdf) { - DEFINES += "NO_PDF" + DEFINES += "NO_PDF" } CONFIG(pdfium) { - DEFINES += "USE_PDFIUM" - SOURCES += ../common/pdf_comic.cpp - win32 { - INCLUDEPATH += $$PWD/pdfium/win/public - contains(QMAKE_TARGET.arch, x86_64): { - LIBS += -L$$PWD/pdfium/win/x64 -lpdfium - } else { - LIBS += -L$$PWD/pdfium/win/x86 -lpdfium - } - } - unix { - macx { - LIBS += -L$$PWD/pdfium/macx/bin -lpdfium - INCLUDEPATH += $$PWD/pdfium/macx/include - } - !macx { - INCLUDEPATH += /usr/include/pdfium - LIBS += -L/usr/lib/pdfium -lpdfium -lfreetype - } - } - } + DEFINES += "USE_PDFIUM" + SOURCES += ../common/pdf_comic.cpp + win32 { + INCLUDEPATH += $$PWD/pdfium/win/public + contains(QMAKE_TARGET.arch, x86_64): { + LIBS += -L$$PWD/pdfium/win/x64 -lpdfium + } else { + LIBS += -L$$PWD/pdfium/win/x86 -lpdfium + } + } + unix { + macx { + LIBS += -L$$PWD/pdfium/macx/bin -lpdfium + INCLUDEPATH += $$PWD/pdfium/macx/include + } + !macx:packagesExist(libpdfium) { + message(Using system provided installation of libpdfium.) + CONFIG += link_pkgconfig + PKGCONFIG += libpdfium + } else:!macx:exists(/usr/include/pdfium):exists(/usr/lib/libpdfium.so) { + message(Using libpdfium found at /usr/lib/pdfium) + INCLUDEPATH += /usr/include/pdfium + LIBS += -L/usr/lib/pdfium -lpdfium + } else { + error(Could not find libpdfium.) + } + } +} CONFIG(pdfkit) { - !macx { - error (Pdfkit is macOS only) - } else { - DEFINES += "USE_PDFKIT" - OBJECTIVE_SOURCES += ../common/pdf_comic.mm - } -} - -CONFIG(poppler) { - win32 { - contains(QMAKE_TARGET.arch, x86_64): { - error ("We currently don't ship precompiled poppler libraries for 64 bit builds") - } - INCLUDEPATH += $$PWD/poppler/include/qt5 - LIBS += -L$$PWD/poppler/lib -lpoppler-qt5 - #Add extra paths for dll dependencies so the executables don't crash when launching - #from QtCreator - LIBS += -L$$PWD/poppler/bin - LIBS += -L$$PWD/poppler/dependencies/bin - } - unix:!macx { - INCLUDEPATH += /usr/include/poppler/qt5 - LIBS += -L/usr/lib -lpoppler-qt5 - } - unix:macx { - error (Poppler backend is currently not supported on macOS) - } + !macx { + error (Pdfkit is macOS only) + } else { + DEFINES += "USE_PDFKIT" + OBJECTIVE_SOURCES += ../common/pdf_comic.mm + } +} + +CONFIG(poppler) { + win32 { + contains(QMAKE_TARGET.arch, x86_64): { + error ("We currently don't ship precompiled poppler libraries for 64 bit builds on Windows") + } + INCLUDEPATH += $$PWD/poppler/include/qt5 + LIBS += -L$$PWD/poppler/lib -lpoppler-qt5 + # Add extra paths for dll dependencies so the executables don't crash when launching + # from QtCreator + LIBS += -L$$PWD/poppler/bin + LIBS += -L$$PWD/poppler/dependencies/bin + } + unix:!macx { + packagesExist(poppler-qt5) { + CONFIG += link_pkgconfig + PKGCONFIG += poppler-qt5 + } else { + INCLUDEPATH += /usr/include/poppler/qt5 + LIBS += -L/usr/lib -lpoppler-qt5 + } + } + unix:macx { + error (Poppler backend is currently not supported on macOS) + } }