Build Instructions for MinGW
My approach uses Debian's MinGW cross-compiler. If you use a different MinGW build environment, you should still be able to grok this. Some Linux distributions such as Fedora and OpenSUSE even have MinGW package repositories.
An example, beta-quality release of Bibledit 3.7.48 using this technique can be found here.
Click here to download Windows Installer MSI package for Bibledit 3.7.48.
Release Notes:
- Requires Windows XP or later. Might work on 2000, but some functionality might not.
- You must install msysgit and place the Git tools in the system path. Git, a version control system, is required for proper function of Bibledit.
- You must install Bibledit to a NTFS partition. FAT type partitions are experimental. You must use PortableGit if you use FAT. This means that installing to a typical (FAT) USB stick is probably not going to work.
- Windows Outpost is required for printing, web browsing, and BibleWorks integration.
- BibleWorks integration requires version 7 or greater
- Printing requires a PDF reader (Acrobat 9 tested).
- SIL/Graphite (NRSI) fonts are supported using the Graphite backend to Pango (pango-graphite). If there is demand, future builds will include this by default.
Known Issues:
- Context-sensitive help buttons are broken in this build. It might even crash Bibledit.
- The startup script has a bug that prevents proper startup sometimes when you restart the app.
- For a complete list of issues with the Windows port, see the support tracker on Savannah.
This beta release is quite a bit more stable than previous. Give it a try! Backup early and often. Please use this on production projects, now that the git integration and USB/remote repositories is functional. As with all Free Software, it comes with no warranty for suitably for any purpose.
Without fuirther ado, here's how to build this using Debian or Ubuntu:
- apt-get install mingw32
- Get mingw-configure to make the configuration for cross-compiling much easier, however, for some reason, the Makefiles sometimes call pkg-config themselves, so they end up getting the build system's config and not the cross-config. You might need to temporarily make your pkg-config point to your win32 build root. (http://live.gnome.org/Cross%20compiling%20GTK%2B%20for%20Win32)
- Create a cross-compile root directory and unpack all of the binaries listed below into it. Set the ROOT environment variable to it.
- SQLite needs a pkg-config file. Copied mine and inserted into $ROOT/lib/pkgconfig
- MinGW seems to have a broken realloc in their cstdlib. Based on some possibly bad advice, I commented it out ;)
- OpenSUSE/MinGW WebKit comes with RPM files that are designed for the OpenSUSE MinGW build system. Either use OpenSUSE, or use the alien command to convert the RPMs to tar.gz, using the '-t' flag of alien. Once done, extract the relevant subtree into your ROOT. You will need to modify the OpenSUSE pkg-config files to work correctly.
- You need to have a native pkg-config, but /usr/bin/pkg-config needs to report the cross-compiled pkg-config state. Suggestion: Point /usr/bin/pkg-config at the custom pkg-config script created by mingw-configure, and point that custom pkg-config script to /usr/bin/pkg-config.dist
- The prebuilt MinGW libxml2 doesn't have a xml2-config. Took my system's copy and changed its prefix, placed it in the $ROOT/bin directory. Ran configure like so:
- XML2_CONFIG=$ROOT/bin/xml2-config ../mingw-configure --prefix=$ROOT
- Unfortunately, /usr/bin/xml2-config is still hardcoded in places, so I did a hack similar to the pkg-config one, where /usr/bin/xml2-config points to $ROOT/bin/xml2-config ... In light of these 2 issues, it might make sense to add $ROOT/bin as a prefix in your $PATH.
- Unless you want to cross-compile practically the entire known Gtk+ GNOME universe, grab the following binaries from http://ftp.gnome.org/pub/gnome/binaries/win32 (some of them are under the dependencies directory):
enchant-1.4.2-tml.zip
enchant-dev-1.4.2-tml.zip
fontconfig-2.4.2-tml-20071015.zip
fontconfig-dev-2.4.2-tml-20071015.zip
freetype-2.3.6.zip
freetype-dev-2.3.6.zip
GConf_2.22.0-2_win32.zip
GConf-dev_2.22.0-2_win32.zip
gettext-runtime-0.17-1.zip
gettext-runtime-dev-0.17-1.zip
gnome-vfs_2.24.0-1_win32.zip
gnome-vfs-dev_2.24.0-1_win32.zip
gtk+-bundle_2.14.7-20090110_win32.zip
gtkhtml-3.18.2.zip
gtkhtml-dev-3.18.2.zip
gtksourceview-2.4.1.zip
gtksourceview-dev-2.4.1.zip
libart_lgpl-2.3.20.zip
libart_lgpl-dev-2.3.20.zip
libbonobo_2.24.0-1_win32.zip
libbonobo-dev_2.24.0-1_win32.zip
libbonoboui_2.24.0-1_win32.zip
libbonoboui-dev_2.24.0-1_win32.zip
expat_2.0.1-1_win32.zip
libglade_2.6.3-1_win32.ziplibglade-dev_2.6.3-1_win32.zip
libgnome_2.24.1-1_win32.zip
libgnomecanvas-2.20.1.zip
libgnomecanvas-dev-2.20.1.zip
libgnome-dev_2.24.1-1_win32.zip
libgnomeui-2.22.1.zip
libgnomeui-dev-2.22.1.zip
libgnurx-2.5.zip
libiconv-1.9.1.bin.woe32.zip
libIDL_0.8.11-1_win32.zip
libxml2-2.6.27.zip
libxml2-dev-2.6.27.zip
ORBit2_2.14.16-1_win32.zip
ORBit2-dev_2.14.16-1_win32.zip
popt-1.10.2-tml-20050828.zip
popt-dev-1.10.2-tml-20050828.zip
-
WebKit is required also, and our friends at OpenSUSE have built it for us:
http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_Factory/noarch/
From there, grab:
mingw32-libwebkit-1.1.7.noarch.rpm
mingw32-libwebkit-devel-1.1.7.noarch.rpm
mingw32-gnutls-2.6.6.noarch.rpm
mingw32-libgnutls-2.6.6.noarch.rpmmingw32-libgnutls-devel-2.6.6.noarch.rpm
mingw32-libsoup-2.26.2.noarch.rpm
mingw32-libsoup-devel-2.26.2.noarch.rpm
- Since GNOME and OpenSUSE together aren't quite the entire universe, grab these too from their respective locations, or have even more fun compiling:
sqlite-amalgamation-3_6_10.zip (just the headers) - from http://www.sqlite.org/download.html
sqlitedll-3_6_10.zip - from http://www.sqlite.org/download.html
aspell-w32-0.50.3.zip - from http://ftp.gnu.org/gnu/aspell/w32
Git-1.6.3.2-preview20090608.exe - from http://code.google.com/p/msysgit/zip232xN.zip (zip.exe) - from http://www.info-zip.org/
unz552xN.exe (unzip.exe) - from http://www.info-zip.org/
diffutils-2.8.7-1-bin.zip - from http://gnuwin32.sourceforge.netpatch-2.5.9-7-bin.zip - from http://gnuwin32.sourceforge.net
- Some debugging tools are included:
GDB for MinGW - gdb-6.8-mingw-3.tar.bz2 - http://mingw.org
Dependency Walker - depends22_x86.zip - http://dependencywalker.com/
Development builds include a copy of gprof from MinGW binutils.
- Finally, it goes without saying that anything that isn't Bibledit is copyright its respective holder. Please check the README and COPYING files in the above packages for redistribution and licensing details.