Probably we should use fomit-frame-pointer explicitly even though
fomit-frame-pointer is included by default with -O2 and -O3 just like
the Linux kernel guys doing. I found append -O3 directly to `CFLAGES`
will do the trick. So I removed the KOPT_CFLAGS variable.
In some compilation platform if finite-math-only option is turned
on, math functions like exp and sqrt will be dynamically linked to
finite versions which cannot be located in Kindle's GLIBC. In my
toolchain the symbol __exp_finite cannot be found in GLIBC_2.4 so
gcc just use __exp_finite in GLIBC_2.15, which will cause a run time
error in Kindle saying "version GLIBC_2.15 not found"
Instead of linking against the location inside the original build tree
we should link against the copy in a single place. This makes the build
code cleaner and more compact even now and will do even more so when we
build more libraries as shared (which is what I am going to attempt
next).
This commit adds Alt-S command which invokes the external utility "extr"
passing it the full pathname of the open PDF file and the current page
number. The utility extracts all attachments on this page (if there are
any) and saves them in the same directory as the PDF file. The file
names given to attachments are decoded from within the PDF file itself,
i.e. they are the same as the original file names of the files embedded
in the PDF.
Conflicts:
pdfreader.lua
This is to make adding support for new formats easier.
See the file pic_jpeg.h for the description of the interface that each
image format must support.
Conflicts:
Makefile
On some distributions (e.g. Ubuntu) the shell used for scripts is dash,
not bash and we explicitly rely on bash's features in the Makefile, so
we must guarantee that we are running with bash (not dash or anything
else).
The file git-rev containing the program's version should be generated at
kpdfview compile time rather than package generation time.
Conflicts:
Makefile
think about setting the alignment trap to a mode that includes warn,
that simply kills the performance because of the storm of faults the
syslog gets...
MG 2012.03 pulling GLIBC_2.15 symbols from libm (because -ffast-math asks
for it).
I didn't see this on my own TC because it's using a much older glibc version (2.9).
instead of HOST (and allow it to be set from the env), use $(MAKE)
instead of make to allow using the jobserver properly, and remove the
dash from commands where we do care about the return code (or inhibit
errors the usual way: rm -f instead of -rm)
Conflicts:
Makefile
Enaling link time optimizations for kpdfview binary and crengine library
causes another slight performance increase --- almost negligible (1-2ms
per page) but still noticeable by precise measurements.
Thanks to NiLuJe who pointed out that our generic -march=armv6 can be
replaced (for K2/K3/DX/DXG) with a more specific optimization:
-march=armv6j -mtune=arm1136jf-s -mfpu=vfp. This I have now done and
also passed ARM_CFLAGS value to CXXFLAGS which is then passed to
crengine build. Tested, works fine. The performance improvement is
negligible (a few ms per page, but seems to be consistently better, i.e.
not just plus/minus fluctuations).
Thanks to NiLuJe who pointed out that we are building mupdf in debug
mode. Switching to "release" build reduced the size of the kpdfview
binary and did not cause any performance degradation (but no noticeable
improvement either --- the page handling times seem to be exactly the
same, i.e. fluctuating a couple of ms in both directions).
1. Remove unused "-lsdtc++" from the compilation stage as no linking is
done then.
2. Add our standard CFLAGS to the compilation of cre.cpp which brings in
-O3 -march=armv6 which enables optimizations.
It seemed strange that we compile a cpp file with gcc (as opposed to
g++), but I left it as is for now.
Instead of calling lfs.mkdir() to create "./history" and "./screenshots"
at runtime it is easier to create them at package build time.
I hesitated whether to add "./clipboard" to this list but decided
against it as we can perhaps change current directory and then
all the code manipulating clipboard would break, so I left it as is.
Conflicts:
filechooser.lua
screen.lua
settings.lua
1. Don't build xmltools in the emulator
2. Remove duplicate --disable-desktopfiles
3. Don't build LFS support. The largest DjVu file I have ever published
was a highres facsimile edition of the London Walton Polyglot (1657)
which was a "mere" 1GB in size and I don't think anyone produced
anything bigger. Besides, storing DjVu files >2GB in size (even if
they existed, which I doubt) on a Kindle with only 3GB total storage
space is _exceedingly_ unlikely.
* hwhw/master: (183 commits)
show infomessage on document open
use InfoMessage for empty TOC, jump history and highlights
copy resources dir on customupdate
add resource: info icon
display document open error message
added infomessage dialog implementation
bugfix, removed old test constant
Added widget abstraction framework
added interface to get blitbuffers from JPEG/PNG files
fix typo
added reading of pan_margin settings
fix full screen refresh command, close#99
add: sleep and usleep in util module
fix: add back KEY_FW{LEFT,RIGHT} commands to NumInputBox
reverted removal of last-doc shortcut, introduced framework restart
kill our own child process. not quite finished.
added line spacing setting for crereader
remove page:getPageText debug dump to improve performance on device
remove page:getPageText debug dump to improve performance on device
display crash.log on error
...
Conflicts:
ft.c
helppage.lua
inputbox.lua
rendertext.lua
rendertext_example.lua
unireader.lua
you can now set the toolchain by using e.g.
make HOST=arm-unknown-linux-gnueabi
or
make HOST=arm-linux-gnueabi
also, a SYSROOT flag is introduced. I use this to point
the compiler to a certain sysroot (which contains headers
and might contain libraries to link against). I use this to
use a current and modern compiler against the older
software versions on the Kindle (especially glibc).
I use it like this:
make HOST=arm-none-linux-gnueabi SYSROOT="--sysroot=/home/hw/my-kindle-sysroot"
It took me few tries to figure out that fonts should point to directory
with *.ttf files as opposed to directory with subdirectories so I
decided to add comment about it
- added forgot git submodule init to make empty repository checkout work
- fetchthirdparty won't re-download exiting archives on disk
- moved mupdf-thirdparty.zip to root of repostory, since mupdf already
has .gitignore and we shouldn't modify upstream submodule
I'm using gcc version 4.6.3 (Debian 4.6.3-1) and git does compile while
version 3.5.24 fails with:
In file included from ../../libdjvu/GContainer.h:67:0,
from ../../libdjvu/GContainer.cpp:63:
../../libdjvu/GSmartPointer.h:492:30: error: ‘size_t’ does not name a type
../../libdjvu/GSmartPointer.h:492:37: error: ISO C++ forbids declaration of ‘n’ with no type [-fpermissive]
this allows to render glyphs and also brings a simple
engine for rendering UTF-8 strings onto the framebuffer.
blitting to uneven offset is implemented here, too, but
needs more work and is still buggy.
In the end, this will allow for a simple GUI.