Skip to content

carlinux/coolreader

This branch is 1 commit ahead of, 1293 commits behind buggins/coolreader:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4e7ae0e · Feb 26, 2019
Feb 26, 2019
Oct 23, 2018
May 21, 2015
Jan 16, 2019
May 13, 2018
Feb 3, 2019
Apr 3, 2012
Feb 3, 2019
Mar 21, 2012
Jan 28, 2019
Apr 3, 2012
Jun 12, 2011
May 3, 2018
Dec 16, 2018
Nov 26, 2018
May 1, 2018
Feb 14, 2011

Repository files navigation

CoolReader 3 - cross platform open source e-book reader

(c) Vadim Lopatin, 1998-2018

Development is moved to GitHub

    https://github.com/buggins/coolreader

Sourceforge repository will be used as a mirror

    git clone git://crengine.git.sourceforge.net/gitroot/crengine/crengine

Join the chat at https://gitter.im/coolreader/Lobby

LICENSE: All source codes (except thirdparty directory) are provided under the terms of GNU GPL license, version 2

Directories

    crengine   - CREngine (DOM/XML/CSS ebook rendering library) sources
    cr3gui     - CR3 with CR3GUI for e-ink devices sources
    cr3qt      - CR3 with Qt based GUI
    cr3wx      - CR3 with wxWidgets based GUI
    thirdparty - third party libraries, to use if not found in system (zlib, libpng, libjpeg, freetype, harfbuzz)
    tinydict   - small library for .dict file format support
    tools      - miscellaneous configuration files
    android    - Android port

External dependencies

    common: zlib, libpng, libjpeg, freetype, harfbuzz
    cr3gui/xcb: libxcb, fontconfig
    cr3gui/nanoX: libnanoX
    cr3/Qt: qt4-core, qt4-gui
    cr3/wx: wxWidgets 2.8

e.g., for Ubuntu you may use

    > sudo apt-get install git-core cmake libqt4-dev libpng12-dev libfreetype6-dev libjpeg62-dev libfontconfig1-dev zlib1g-dev

Packaging

Debian based packages included to project:

    packages/ubuntu -- debian package for Ubuntu, with Qt frontend
    packages/openinkpot -- debian package for OpenInkpot, with XCB frontend

To build debian package, copy one of package descriptions from packages directory:

    cp -r packages/ubuntu/debian debian
    Then, package can be built using `debuild` command.

Android Build Instructions

Use Android Studio - open subdirectory "android" as Android Studio project

Ensure that you have Android SDK and NDK installed

CMake Build Instructions

    # Building QT version
    # libqt4-dev should be installed
    mkdir qtbuild
    cd qtbuild
    cmake -D GUI=QT -D CMAKE_BUILD_TYPE=Release -D MAX_IMAGE_SCALE_MUL=2 -D DOC_DATA_COMPRESSION_LEVEL=3 -D DOC_BUFFER_SIZE=0x1400000 -D CMAKE_INSTALL_PREFIX=/usr ..
    make
    sudo make install


    # Building QT version, in DEBUG mode
    mkdir qtbuild
    cd qtbuild
    cmake -D GUI=QT -D CMAKE_BUILD_TYPE=Debug -D MAX_IMAGE_SCALE_MUL=2 -D DOC_DATA_COMPRESSION_LEVEL=3 -D DOC_BUFFER_SIZE=0x1400000 -D CMAKE_INSTALL_PREFIX=/usr ..
    make
    sudo make install

    # Building QT version, in DEBUG mode, ANTIWORD development
    mkdir qtbuild
    cd qtbuild
    cmake -D GUI=QT -D CMAKE_BUILD_TYPE=Debug -D ENABLE_ANTIWORD=1 -D MAX_IMAGE_SCALE_MUL=2 -D DOC_DATA_COMPRESSION_LEVEL=3 -D DOC_BUFFER_SIZE=0x1400000 -D CMAKE_INSTALL_PREFIX=/usr ..
    make
    sudo make install

    # Building wxWidgets version
    # libwxgtk2.8-dev should be installed
    mkdir wxbuild
    cd wxbuild
    cmake -D GUI=WX -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr ..
    make

    # Building ARM version on OpenInkpot:
    mkdir armbuild
    cd armbuild
    cmake -D CMAKE_TOOLCHAIN_FILE=../tools/toolchain-arm-oi.cmake -D MAX_IMAGE_SCALE_MUL=2 -D CMAKE_BUILD_TYPE=Release -D GUI=CRGUI_XCB -D USE_EXTERNAL_EDICT_DICTIONARY=1 ..
    make

    # Building i386 version, Qt backend V3 simulation:
    mkdir qt-v3
    cd qt-v3
    cmake -D DEVICE_NAME=v3 -D MAX_IMAGE_SCALE_MUL=2 -D CMAKE_BUILD_TYPE=Debug -D USE_STATIC_ZLIB=1 -Wdev -D ENABLE_ANTIWORD=1 -D CMAKE_INSTALL_PREFIX=dest -D GUI=CRGUI_QT -D DOC_DATA_COMPRESSION_LEVEL=1 -D DOC_BUFFER_SIZE=0x500000 ..
    make

    # Building i386 version (for OpenInkpot), V3 simulation:
    mkdir xcb-v3
    cd xcb-v3
    cmake -D DEVICE_NAME=v3 -D MAX_IMAGE_SCALE_MUL=2 -D CMAKE_BUILD_TYPE=Debug -D USE_STATIC_ZLIB=1 -Wdev -D ENABLE_ANTIWORD=1 -D CMAKE_INSTALL_PREFIX=/usr -D GUI=CRGUI_XCB -D DOC_DATA_COMPRESSION_LEVEL=1 -D DOC_BUFFER_SIZE=0x500000 ..
    make

    # Building i386 version (for OpenInkpot), n516/azbooka simulation:
    mkdir xcb-n516
    cd xcb-n516
    cmake -D DEVICE_NAME=n516 -D MAX_IMAGE_SCALE_MUL=2 -D CMAKE_BUILD_TYPE=Debug  -D CMAKE_INSTALL_PREFIX=/usr -D GUI=CRGUI_XCB ..
    make

    # Building Jinke/LBook V3 viewer plugin (libfb2.so):
    mkdir v3build
    cd v3build
    mkdir dest
    cmake -D DEVICE_NAME=v3 -D MAX_IMAGE_SCALE_MUL=2 -D CMAKE_TOOLCHAIN_FILE=../tools/toolchain-arm-v3.cmake -D GUI=CRGUI_JINKE_PLUGIN -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=dest ..
    make

    # Building Jinke/LBook V3 viewer plugin (libfb2.so), new SDK:
    mkdir v3build
    cd v3build
    mkdir dest
    cmake -D DEVICE_NAME=v3 -D MAX_IMAGE_SCALE_MUL=2 -D CMAKE_TOOLCHAIN_FILE=../tools/toolchain-arm-linux-gnueabi.cmake -D GUI=CRGUI_JINKE_PLUGIN -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=dest ..
    make

    # Building Jinke/LBook V3 fb2props plugin for Bookshelf (libfb2props.so) i386:
    mkdir fb2props386
    cd fb2props386
    mkdir dest
    cmake -D GUI=FB2PROPS -D CMAKE_BUILD_TYPE=Debug -D CMAKE_INSTALL_PREFIX=dest ..
    make

    # Building Jinke/LBook V3 fb2props plugin for Bookshelf (libfb2props.so):
    mkdir v3fb2propsbuild
    cd v3fb2propsbuild
    mkdir dest
    cmake -D CMAKE_TOOLCHAIN_FILE=../tools/toolchain-arm-v3.cmake -D GUI=FB2PROPS -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=dest ..
    make

    # Building Jinke/LBook V3 fb2props plugin for Bookshelf NEW SDK (libfb2props.so):
    mkdir v3newfb2propsbuild
    cd v3newfb2propsbuild
    mkdir dest
    cmake -D CMAKE_TOOLCHAIN_FILE=../tools/toolchain-arm-linux-gnueabi.cmake -D GUI=FB2PROPS -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=dest ..
    make

    # Building Jinke/LBook V3 new SDK viewer app (cr3):
    mkdir v3app
    cd v3app
    #cmake -D DEVICE_NAME=v3 -D CMAKE_TOOLCHAIN_FILE=../tools/toolchain-arm-linux-gnueabi.cmake -D MAX_IMAGE_SCALE_MUL=2 -D GUI=CRGUI_NANOX -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=dest -D DOC_DATA_COMPRESSION_LEVEL=1 -D DOC_BUFFER_SIZE=0x500000 -D BIG_PAGE_MARGINS=1 ..
    cmake -D DEVICE_NAME=v3 -D CMAKE_TOOLCHAIN_FILE=../tools/toolchain-arm-linux-gnueabi.cmake -D MAX_IMAGE_SCALE_MUL=2 -D GUI=CRGUI_NANOX -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=dest -D DOC_DATA_COMPRESSION_LEVEL=1 -D DOC_BUFFER_SIZE=0x500000 ..
    make

    # Building Jinke/LBook V5 viewer app (cr3):
    mkdir v5build
    cd v5build
    cmake -D DEVICE_NAME=v5 -D MAX_IMAGE_SCALE_MUL=2 -D CMAKE_TOOLCHAIN_FILE=../tools/toolchain-arm-v5.cmake -D GUI=CRGUI_NANOX -D GRAY_BACKBUFFER_BITS=3 -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=dest -D DOC_DATA_COMPRESSION_LEVEL=1 -D DOC_BUFFER_SIZE=0x580000 ..
    #cmake -D DEVICE_NAME=v5 -D CMAKE_TOOLCHAIN_FILE=../tools/toolchain-arm-v5.cmake -D GUI=CRGUI_NANOX -D GRAY_BACKBUFFER_BITS=3 -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=dest ..

    make

    # Building Jinke/LBook V3+ viewer app (cr3):
    mkdir v3abuild
    cd v3abuild
    cmake -D DEVICE_NAME=v3a -D CMAKE_TOOLCHAIN_FILE=../tools/toolchain-arm-v5.cmake -D GUI=CRGUI_NANOX -D CR3_PNG=1 -D CR3_JPEG=1 -D CR3_FREETYPE=1 -D GRAY_BACKBUFFER_BITS=4 -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=dest -D RAM_COMPRESSED_BUFFER_ENABLED=0 -D DOC_DATA_COMPRESSION_LEVEL=1 -D DOC_BUFFER_SIZE=0x1000000 ..
    make

    # Building ARM version for PocketBook:
    mkdir pb360
    cd pb360
    cmake -D DEVICE_NAME=pb360 -D CMAKE_INSTALL_PREFIX=/usr/local/pocketbook/mnt/ext1 -D CMAKE_TOOLCHAIN_FILE=../tools/toolchain-arm-pocketbook.cmake -D CMAKE_CXX_FLAGS_RELEASE:STRING="-fomit-frame-pointer -O1" -D MAX_IMAGE_SCALE_MUL=2 -D CMAKE_BUILD_TYPE=Release -D GUI=CRGUI_PB -D ENABLE_CHM=1 -D ENABLE_ANTIWORD=1 ..
    make

    # Building ARM version for PocketBook Pro
    mkdir pbPro
    cd pbPro
    cmake -D DEVICE_NAME=pb360 -D CMAKE_INSTALL_PREFIX=/usr/local/pocketbook/mnt/ext1 -D CMAKE_TOOLCHAIN_FILE=../tools/toolchain-arm-gnu-eabi-pocketbook.cmake -D MAX_IMAGE_SCALE_MUL=2 -D CMAKE_BUILD_TYPE=Release -D ENABLE_CHM=1 -D ENABLE_ANTIWORD=1 -D GUI=CRGUI_PB -D POCKETBOOK_PRO=1 ..

    # Building Jinke/LBook V3+ simulator for Win32 (cr3):
    mkdir v3win32
    cd v3win32
    cmake -D DEVICE_NAME=v3a -G "Visual Studio 10" -D MAX_IMAGE_SCALE_MUL=2 -D GUI=CRGUI_WIN32 -D GRAY_BACKBUFFER_BITS=4 -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=dest -D DOC_DATA_COMPRESSION_LEVEL=1 -D DOC_BUFFER_SIZE=0x800000 ..
    make

QT Build under Windows

Using QT SDK  

Environment setup:

  • Download and install QT SDK, git, cmake, msys
  • Copy contents of git and cmake dirs to QT/mingw/
  • Copy make.exe from msys/bin to QT/mingw/bin

Run Qt SDK / Qt Command Prompt. Execute:

    > sh
    > git clone git://crengine.git.sourceforge.net/gitroot/crengine/crengine
    > mv crengine cr3
    > cd cr3
    > mkdir qtbuild
    > cd qtbuild
    > cmake -D GUI=QT -D CMAKE_BUILD_TYPE=Release -G "MSYS Makefiles" -D USE_QT_ZLIB=1 -D CMAKE_INSTALL_PREFIX=dist ..
    > make
    > make install

    cmake -D GUI=QT -D CMAKE_BUILD_TYPE=Release -G "Visual Studio 9 2008" -D USE_QT_ZLIB=1 -D DOC_DATA_COMPRESSION_LEVEL=3 -D DOC_BUFFER_SIZE=0x1500000 -D CMAKE_INSTALL_PREFIX=dist ..
    cmake -D GUI=QT -D CMAKE_BUILD_TYPE=Release -G "Visual Studio 10" -D USE_QT_ZLIB=1  -D MAX_IMAGE_SCALE_MUL=2 -D DOC_DATA_COMPRESSION_LEVEL=3 -D DOC_BUFFER_SIZE=0x1500000 -D CMAKE_INSTALL_PREFIX=dist ..

to disable console, use /SUBSYSTEM:WINDOWS linker option instead of /SUBSYSTEM:CONSOLE

For QT5, use GUI=QT5 instead of GUI=QT

For building Qt5 app from QtCreator remove -G (generator) parameter:

Release build:

	-D GUI=QT5 -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=dist ..

Debug build:

	-D GUI=QT5 -D CMAKE_BUILD_TYPE=Debug -D CMAKE_INSTALL_PREFIX=dist ..

It will put built cr3.exe and all necessary distribution files to directory qtbuild/dist.

You need also add following DLLs to this directory in order to get cr3.exe working:

    - mingwm10.dll
    - QtCore4.dll
    - QtGui4.dll
    - libz.dll

Qt Build under Mac OSX

    #configure and make Qt as static libraries
    #Inside Qt source root:
    ./configure -prefix /Developer/Qt -opensource -static -release -arch x86 -arch x86_64 \
    -no-accessibility -no-stl -no-qt3support -qt-zlib -no-gif -no-libtiff -qt-libpng -qt-freetype -no-libmng -qt-libjpeg -no-nis -no-cups -no-iconv -no-pch -no-dbus -no-opengl -no-fontconfig \
    -no-xmlpatterns -no-multimedia -no-phonon -no-phonon-backend -no-audio-backend -no-openssl \
    -no-gtkstyle -no-svg -no-webkit -no-javascript-jit -no-script -no-scripttools -no-declarative 
    #make Core and GUI libraries
    make sub-src
    #make symlinks from `pad` to /Developer/Qt for bin, include, lib, src dirs

    #inside cr3 directory
    #configure using cmake
    mkdir macbuild
    cd macbuild
    cmake -G "Unix Makefiles" -D GUI=QT -D CMAKE_OSX_ARCHITECTURES="i386 x86_64" -D QT_QMAKE_EXECUTABLE=/Developer/Qt/bin/qmake -D CMAKE_BUILD_TYPE=Release -D MAX_IMAGE_SCALE_MUL=2 -D DOC_DATA_COMPRESSION_LEVEL=3 -D DOC_BUFFER_SIZE=0x1400000 -D CMAKE_INSTALL_PREFIX=cr3.app ..
    make
    make install

About

Official mirror of CoolReader project. Sourceforge: https://sourceforge.net/projects/crengine/

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 54.3%
  • C 22.5%
  • Java 19.8%
  • CMake 1.4%
  • CSS 1.1%
  • Makefile 0.6%
  • Other 0.3%