Setting up a Windows Build Environment

From Bluefish Wiki
Revision as of 22:11, 1 September 2009 by Shawn Novak (talk | contribs) (Added gucharmap build instrucitons)
Jump to navigation Jump to search
Error creating thumbnail: File missing

Windows Build Status

  • Current Known issues:
    • Socket code doesn't work so files can't be opened in a currently running copy of bluefish.


Setting up your Build Environment

The first step is of course to download all the packages required. You can extract them pretty much anywhere but for the purposes of this guide I used C:\MinGW. Keep in mind that C:\MingGW will be the root directory (/) and that in MSYS /usr is the same as /, therefore /usr/local when viewed from the windows side will be C:\MinGW\local.

/ (C:\MinGW) MSYS/MiNGW Packages
autoconf-2.63-1-msys-1.0.11-bin.tar.lzma
automake-1.11-1-msys-1.0.11-bin.tar.lzma
binutils-2.19.1-mingw32-bin.tar.gz
bison-2.4.1-1-msys-1.0.11-bin.tar.lzma
crypt-1.1-1-MSYS-1.0.11-1.tar.bz2
flex-2.5.33-MSYS-1.0.11-1.tar.bz2
gawk-3.1.5-MSYS-1.0.11-1.tar.bz2
gcc-core-3.4.5-20060117-3.tar.gz
gcc-g++-3.4.5-20060117-3.tar.gz
gcc-g77-3.4.5-20060117-3.tar.gz
gdb-6.8-mingw-3.tar.bz2
gdbm-1.8.3-MSYS-1.0.11-1.tar.bz2
guile-1.8.4-MSYS-1.0.11-1-bin.tar.gz
guile-1.8.4-MSYS-1.0.11-1-dll17.tar.gz
gzip-1.3.12-1-msys-1.0.11-bin.tar
libltdl-2.2.7a-1-msys-1.0.11-dll-7.tar.lzma
libtool-2.2.7a-1-msys-1.0.11-bin.tar.lzma
lndir-6.8.1.0-MSYS-1.0.11-1.tar.bz2
m4-1.4.13-1-msys-1.0.11-bin.tar.lzma
man-1.6f-1-msys-1.0.11-bin.tar.lzma
mingwrt-3.15.2-mingw32-dev.tar.gz
mingwrt-3.15.2-mingw32-dll.tar.gz
mingw-utils-0.3.tar.gz
msysCORE-1.0.11-rc-1-bin.tar.gz
perl-5.6.1_2-1-msys-1.0.11-bin.tar.lzma
svn-win32-1.5.3.zip
vim-7.1-MSYS-1.0.11-1-bin.tar.gz
w32api-3.13-mingw32-dev.tar.gz
/local (C:\MinGW\local) GNOME Packages
atk_1.26.0-1_win32.zip
atk-dev_1.26.0-1_win32.zip
cairo_1.8.8-1_win32.zip
cairo-dev_1.8.8-1_win32.zip
expat_2.0.1-1_win32.zip
expat-dev_2.0.1-1_win32.zip
GConf_2.22.0-2_win32.zip
GConf-dev_2.22.0-2_win32.zip
gettext-runtime-0.17.zip
gettext-runtime-dev-0.17.zip
gettext-tools-0.17.zip
glib_2.20.4-1_win32.zip
glib-dev_2.20.4-1_win32.zip
gnome-common-2.11.0.zip
gtk+_2.16.5-1_win32.zip
gtk+-dev_2.16.5-1_win32.zip
intltool_0.40.4-1_win32.zip
intltool-dev_0.40.4-1_win32.zip
libgnurx-2.5.zip
libgnurx-dev-2.5.zip
libiconv-1.9.1.bin.woe32.zip
libpng_1.2.38-1_win32.zip
libpng-dev_1.2.38-1_win32.zip
libxml2_2.7.3-1_win32.zip
libxml2-dev_2.7.3-1_win32.zip
ORBit2-dev_2.14.16-1_win32.zip
ORBit2_2.14.16-1_win32.zip
pango_1.24.5-1_win32.zip
pango-dev_1.24.5-1_win32.zip
pkg-config-0.23-2.zip
zlib-1.2.3.zip
zlib-dev-1.2.3.zip
/local (C:\MinGW\local) Custom Packages
pcre-7.9-bin-MinGW-20090824.tbz2
aspell-0.60.6-bin-MinGW-20090901.tbz2
enchant-1.5.0-bin-MinGW-20090901.tbz2

A full set of dictionaries for Aspell 0.60.6 can be found here: ftp://kernel86.muleslow.net/mingw/aspell/lang/

The last thing you need is Perl. The MSYS version is 5.6.1 which is not new enough to pass the configure script for a lot of programs including Bluefish. I use the MSYS 5.6.1 version for autoconf/automake/autogen.sh and an external version such as ActiveState's in /opt/perl for anything that needs a newer version.


Configuring your Build Environment

You only need to set a few environment variables and settings as follows:

PATH="/bin:/local/bin:/opt/perl/bin"
C_INCLUDE_PATH="/include:/local/include"
LIBRARY_PATH="/lib:/local/lib"
echo /local/share/aclocal > /share/aclocal/dirlist
ln -s /local/bin/libxml2-2.dll /local/bin/libxml2.dll


To strip the prefixes from the Makefiles before you build Bluefish you can download or create this simple script I made, strip_prefix.sh. Place it in /usr/local/bin or somewhere in the path.

strip_prefix.sh:

#!/bin/sh

for i in $(find ./ -name Makefile | grep -v plugin); do
    echo Checking: $i
    cat $i | sed s/'${prefix}\/'// | sed s/'${exec_prefix}\/'// > ${i}.tst
    rm $i
    mv ${i}.tst $i
done


Building Bluefish

Check out the latest windows branch:

svn checkout https://bluefish.svn.sourceforge.net/svnroot/bluefish/branches/bluefish_windows

Run autogen.sh with perl 5.6.1 and then switch /bin/perl to your 5.8.1 or newer version or perl and run configure:

./configure LDFLAGS=-lgnurx CFLAGS=-mwindows
./strip_prefix.sh
make

Drop the CFLAGS option to configure for a console window for debug output and of course run configure with '--enable-debugging-output' for a full debug build.


Building External Packages

If you wish to build your own versions of the custom packages these are the configure parameters used for the ones provided.

Aspell 0.60.6: ftp://ftp.gnu.org/gnu/aspell/aspell-0.60.6.tar.gz

./configure --prefix=/local --disable-rpath --enable-win32-relocatable

Enchant 1.5.0: http://www.abisource.com/downloads/enchant/1.5.0/enchant-1.5.0.tar.gz

./configure --prefix=/local --enable-aspell --disable-ispell --disable-myspell

PCRE 7.9: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.9.tar.bz2

./configure --prefix=/local

gucharmap 2.26: http://ftp.gnome.org/pub/GNOME/sources/gucharmap/2.26/gucharmap-2.26.3.tar.bz2

These instructions taken from the mailing list: http://article.gmane.org/gmane.comp.web.bluefish.devel/2197

First apply the following patch by Daniel Leidert: gucharmap26.diff and then configure with the following commands.

intltoolize -f
libtoolize -f
aclocal -I m4/ --force
autoheader -f
automake -f
autoconf -f
./configure --disable-gconf --disable-schemas-install --disable-scrollkeeper