Hi, I detailed the mingw32 compilation steps. You can see my work in the patch. I coulnd't manage to get the "make install" build the .dll file for libjbig2dec.
Cheers, -- Franck
# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: root@dakota-20110706063010-5r2jrm8mim6hvmv6 # target_branch: bzr://bzr.savannah.gnu.org/pdf/libgnupdf/trunk/ # testament_sha1: 81a0da2edefddc9ae4594734450566cceca1b760 # timestamp: 2011-07-06 08:30:28 +0200 # base_revision_id: [email protected] # # Begin patch === modified file 'ChangeLog' --- ChangeLog 2011-07-01 19:58:46 +0000 +++ ChangeLog 2011-07-06 06:30:10 +0000 @@ -1,3 +1,8 @@ +2011-07-06 Franck Lesage <[email protected]> + + gnupdf-hg: documenting the mingw32 compilation steps + * doc/gnupdf-hg.texi + 2011-07-01 Aleksander Morgado <[email protected]> torture: fix compilation issues under mingw32 === modified file 'doc/gnupdf-hg.texi' --- doc/gnupdf-hg.texi 2011-04-22 12:57:52 +0000 +++ doc/gnupdf-hg.texi 2011-07-06 06:26:25 +0000 @@ -62,6 +62,7 @@ * Writing Documentation:: * Sending Patches:: * Testing the library:: +* Cross-compiling libgnupdf for Windows under GNU/Linux:: * Updating the AUTHORS file:: @end menu @@ -1427,6 +1428,161 @@ See @file{torture/tortutils/tortutils.h} for documentation on the functions provided by the library. +@node Cross-compiling libgnupdf for Windows under GNU/Linux +@chapter Setup a MinGW build of gnupdf + +This chapter documents all the needed steps to setup a mingw build of gnupdf. MinGW provides a complete Open Source programming tool set which is suitable for the development of native MS-Windows applications. + +@table @strong +@item Getting and installing MinGW +If you are under debian, you can install mingw32 with the following command: + +@example +$ apt-get install mingw32 +@end example + +If you are not on an usual disto, download mingw32 at @url{http://sourceforge.net/projects/mingw/files/Cross-Hosted MinGW Build Tool}. You follow the README in order to install the package. You can go to @url{http://mingw.org} for more details: + +@example +... +$ sh x86-mingw32-build.sh i686-mingw32 +... +@end example + +@item The dependencies +After having downloaded the sources of the GNU PDF Library, you need to install the required libraries. Below is a list of the required libraries: + +@itemize @minus +@item zlib +@item libpthread +@item libuuid +@item libgpg-error +@item libgcrypt +@item libcheck +@item libjbig2dec +@item libjpeg +@end itemize + +You need to create some dicectories in order to stock the mingw32 dependences. +@example +$ mkdir $HOME/w32root +$ mkdir $HOME/w32root/lib +$ mkdir $HOME/w32root/include +@end example + +@item zlib +Download zlib either the source or the binaries. In order to compile the source you have to follow to read the page available at @url{http://www.crosscompile.org/static/pages/ZLib.html}. The binaries are available at @url{http://zlib.net/zlib125-dll.zip} +@example +$ unzip path/to/zlib125-dll.zip +$ mv include/* $HOME/w32root/include +$ mv zlib1.dll $HOME/w32root/lib/libz.dll +@end example + +@item libpthreads +There is a bug in @emph{mingw32-pthreads} (Bug 599227). This bug affects the compilation of libcheck. You need to download the source of the fixed version. You have to log in the pthreads-win32 cvs. The password is @emph{anoncvs}. Then, you download, compile and install. +@example +$ cvs -d :pserver:anoncvs@@sourceware.org:/cvs/pthreads-win32 login # anoncvs is the password +$ cvs -d :pserver:anoncvs@@sourceware.org:/cvs/pthreads-win32 checkout -D 2011-05-11 -d pthreads-w32-20110511 pthreads +$ cd pthreads-w32-20110511 +$ make CROSS=i586-mingw32msvc- clean GC +$ cp pthread.h sched.h semaphore.h $HOME/mingw32/include/ +$ cp pthreadGC2.dll $HOME/mingw32/lib/libpthread.dll +@end example + +@item libuuid +We tried to compile the package providing @emph{libuuid} from sources under mingw32. But we got some issues. Luckily, we already have some precompiled @emph{libuuid} binaries we can use in here @url{http://mirror.vcu.edu/pub/windows/cygwin/release/util-linux/libuuid-devel/}. So, steps for @emph{libuuid} are: +@example +$ tar -jxf libuuid-devel-2.17.2-1.tar.bz2 +$ cp -r usr/include/uuid $HOME/w32root/include +$ cp -r usr/lib/libuuid.dll.a $HOME/w32root/lib +@end example + + + +@item libgpg-error and libgcrypt + +Go to @url{http://gnupg.org/download/index.en.html}. You have to download: + +@itemize @minus +@item @file{libgpg-error-1.10.tar.bz2} +@item @file{libgcrypt-1.4.6.tar.gz} +@end itemize + + For @emph{libgpg-error-1.10} and @emph{libgcrypt-1.4.6}, you have to note that the @file{autogen.sh} script recognizes @emph{---build-w32} and set the prefix installation to @file{$HOME/w32root}. You can't modify this prefix. A typical compilation and installation would be: +@example +$ tar zxf path/to/libgpg-error-1.10.tar.gz +$ cd libgpg-error-1.10 +$ ./autogen.sh --build-w32 +$ make +$ make install +@end example + +@example +$ tar zxf path/to/libgcrypt-1.4.6.tar.gz +$ cd libgcrypt-1.4.6 +$ ./autogen.sh --build-w32 +$ make +$ make install +@end example + +The libraries are installed in @file{$HOME/w32root}. + + + +@item libcheck +You need the svn version of @emph{libcheck}: +@example +$ svn co https://check.svn.sourceforge.net/svnroot/check/trunk check +@end example +In order to compile, you need to type: +@example +$ cd check +$ autoreconf --install +$ ./configure --host=i586-mingw32msvc --prefix=$HOME/w32root +$ make +$ make install +@end example + + + +@item libjbig2dec +Download @url{http://ghostscript.com/~giles/jbig2/jbig2dec/jbig2dec-0.11.tar.gz}. Compile and install the library with the following commands. +@example +$ ./configure --host=i586-mingw32msvc --prefix=$HOME/w32root +$ make +$ make install +$ i586-mingw32msvc-gcc -shared -o .libs/libjbig2dec.dll jbig2.o jbig2_arith.o jbig2_arith_int.o jbig2_arith_iaid.o jbig2_huffman.o + jbig2_segment.o jbig2_page.o jbig2_symbol_dict.o jbig2_text.o jbig2_generic.o jbig2_refinement.o jbig2_mmr.o jbig2_halftone.o + jbig2_image.o jbig2_image_pbm.o jbig2_metadata.o +$ cp .libs/libjbig2dec.dll $HOME/w32root/lib +@end example + +@item libjpeg +Download @emph{libjpeg} at @url{http://www.ijg.org/files/jpegsrc.v8c.tar.gz}. Compile and install the library with the following commands. +@example +$ cd jpeg-8c +$ ./configure --host=i586-mingw32msvc --prefix=$HOME/w32root +$ make +$ make install +@end example + +@item Compiling +Now you can run in the GNU PDF trunk: +@example +$ sh autogen.sh +$ ./configure --host=i586-mingw32msvc --with-zlib=$HOME/w32root --with-libcheck-prefix=$HOME/w32root --with-libjbig2dec-prefix=$HOME/w32root + --with-libjpeg-prefix=$HOME/w32root --with-libuuid-prefix=$HOME/w32root +$ make +$ make install +@end example +At the time of writing this documentation, there are some errors during @code{make}. +@end table + + + + + + @node Updating the AUTHORS file @chapter Updating the AUTHORS file # Begin bundle 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
