MinGW/MSYS - Tux Paint 0.9.18/19/20/21 (2K/XP only)

Recent changes [2009-01-14]

Recent changes [2008-06-17]

Instructions for installing MinGW/MSYS

Instructions for building all these Libraries:

SDL:
SDL_image:
SDL_mixer:
SDL_ttf:
Gettext:
FLTK: librsvg:
SDL_Pango:
FriBidi:

(and finally) Instructions for building these Applications:


Use the pre-built dependencies - save yourself a lot of time!

Tux Paint:

MinGW/MSYS

Provides a Unix-like development environment on Windows.

First thing to do is to install MinGW.

Download the Automated MinGW Installer from here: [WWW] MinGW-5.1.3.exe into a new directory, I used 'zips/tools/MinGW'.

Run the installer and choose the 'Download and Install' option, accept the license, choose the 'Current' option, on the 'Minimal' install panel check the 'g++' option and confirm that 'MinGW base tools' is also checked, accept the default installation directory (perhaps just changing the drive), accept the Start Menu folder and click install.

Next, download MSYS from here: [WWW] MSYS-1.0.10.exe into a new directory, I used 'zips/tools/MSYS'.

Run the installer, click Next, accept the license, skip the readme(!), accept the default installation directory (perhaps just changing the drive), click Next through the Select Components screen, accept the Start Menu folder, click Install.

After a bit, a command prompt will appear to perform a post-install step: Go back to the installer and click Finish.

Next, download msysDTK from here: [WWW] msysDTK-1.0.1.exe into your MSYS download folder, I used 'zips/tools/MSYS'.

Run the installer, click Next, accept the license, make sure the Destination directory is the same as the one you used for MSYS (it should be), click Next through the Select Components screen and click Install.

At this point it's worth testing the MSYS shell (the icon should be on your desktop), double-click it to start, type exit and Enter to close it down.

To make the MSYS shell slightly easier to use, customise the file '/msys/1.0/msys.bat' to make the window bigger (120 x 60):

...
start rxvt -backspacekey ... -geometry 120x60 -e /bin/sh --login -i
...
Create a directory 'D:\home' (check the drive letter) into which you should put this file: .inputrc which makes the <HOME>, <END> and <DEL> keys work properly:
set completion-query-items 100
set completion-ignore-case on
set show-all-if-ambiguous off

set input-meta on
set output-meta on
set convert-meta off
set bell-style none

"\e[2~": paste-from-clipboard
"\e[3~": delete-char
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[7~": beginning-of-line
"\e[8~": end-of-line

Set a Windows environment variable HOME to 'D:\home' (check the drive letter) using the System Properties, Advanced, Environment Variables panel.


To make things easier later on, make a directory where you want to build all the libraries and applications, I used 'D:/dev' (check the drive letter) and then put this file in your new home directory: .profile. Here are it's contents:
# points builds at their dependencies
export set LIBRARY_PATH=/usr/local/bin:/usr/local/lib
export set CPATH=/usr/local/include
export set PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

# change working directory to where the source lives
cd "/d/dev"
Download all these packages, I put them into 'zips/tools/MSYS': For the next step download and install the [WWW] 7-Zip file archiver from here: [WWW] 7z442.exe. After installing it, use the Start Menu, locate the 7-Zip folder under Programs and click on '7-Zip file Manager'. Click on the 'Tools|Options...' menu item and check the archive files you want to associate 7-zip with. I just check everything apart from '001'.

Using the Windows Explorer (stick a short-cut on the quick-launch bar) navigate to the 'zips/tools/MSYS' directory, right-click on 'msys-autoconf-2.59.tar.bz2' and select 'Extract here'. You should see a file 'msys-autoconf-2.59.tar' appear, right-click on this file and select 'Extract here'.

This should create a set of directories: 'bin', 'info', 'man' and 'share'. Repeat the above process for 'msys-automake-1.8.2.tar.bz2' and 'msys-libtool-1.5.tar.bz2'. If asked about over-writing existing files, just let it over-write them.

Now pick up all the created directories, and (carefully!) drop them into the directory 'D:/msys/1.0'. You will get warnings about the directories already existing, just let it proceed.

Now go back to the 'zips/tools/MSYS' directory and repeat the unpacking process on 'directx-devel.tar.gz' and 'opengl-devel.tar.gz'. This should create the directories: 'include' and 'lib'. Drag and drop these directories into the directory 'D:/mingw' (NOT the msys directory above). You will get warnings about the directories already existing, just let it proceed.
When finished, delete all the intermediate '.tar' files.

Now right-click on 'msys-pkg-config-win32.zip' and select 'Extract Here'. Drag-and-drop the directories created into the directory 'D:/mingw' (NOT the msys directory above). This is a package I put together from files [WWW] here and added a script that makes it work in MSYS. The 'README.txt' file contains more information.

Move the file 'pkg.m4' from 'D:/mingw/share/aclocal/' into the directory 'D:/msys/1.0/local/share/aclocal/'.

Extract the contents of 'msys-libtool-updates.tar.bz2' and put the 'libtool.m4' and the 'ltdl.m4' files into 'D:/msys/1.0/share/aclocal/', replacing the existing files.

Copy 'nasm.exe' into 'D:/mingw/bin'.

Check everything went OK by starting the MSYS shell and typing the line after the '$' followed by Enter:
(Note: you can paste into the MSYS window using the middle mouse button, copy by selecting text)
$ autoconf --version
autoconf (GNU Autoconf) 2.59
Written by David J. MacKenzie and Akim Demaille.

Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ automake --version
automake (GNU automake) 1.8.2
Written by Tom Tromey <tromey@redhat.com>.

Copyright 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ libtool --version
ltmain.sh (GNU libtool) 1.5 (1.1220 2003/04/05 19:32:58)

Copyright (C) 2003  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ pkg-config --version
0.20

$ nasm -v
NASM version 0.98.31 compiled on May 18 2002

At this point, if you just want to build Tux Paint, you can download the pre-built dependencies that I made using these instructions, and save yourself a lot of time and effort.

Otherwise, you'll need about 2G of spare disk space.

But first, here's another tool you'll find useful if you run into problems: [WWW] Dependency Walker 2.2 download the latest version and extract the files in the usual manner. I moved mine into a directory named 'D:/bin'. Double-click on 'depends.exe' to run it then click on the 'Options' menu item and select 'Configure Handled File Extension...'. Type 'DLL' into the 'Extension:' box and click 'Add', type 'EXE' into the box and click 'Add', click 'OK' and if you now right-click on '.exe' or '.dll' files you should see a 'View Dependencies' item near the top of the menu.

SDL

Download the source code using the above link into a directory, I used 'zips/src'. Unpack the tar archive by right-clicking and selecting 'Extract Here'. Then right-click on the tar archive select "Extract Files..." and use the browse button the select the D:/dev directory (see above) where you want to build the libraries and applications, then click OK.

Now start the MSYS shell and execute the following commands:
(Note: just type 'cd SDL' and hit <TAB> to auto-complete)
$ cd SDL-1.2.12/
$ ./configure && make && make install

For convenience when running test programs build another version of libSDLmain by editing 'src/main/win32/SDL_win32_main.c' and adding:

#define NO_STDIO_REDIRECT

just before the first occurrence of:

#ifndef NO_STDIO_REDIRECT

at about line 41, and run the following:

$ make
$ cp build/libSDLmain.a /usr/local/lib/libSDLmain_console.a
$ cp /usr/local/bin/sdl-config /usr/local/bin/sdl-config-console

and edit '/msys/1.0/local/bin/sdl-config-console' to look like this:

...
    --libs)
      echo -L${exec_prefix}/lib  -lmingw32 -lSDLmain_console -lSDL -lcomdlg32 -lgdi32 -mconsole
      ;;
    --static-libs)
#    --libs|--static-libs)
      echo -L${exec_prefix}/lib  -lmingw32 -lSDLmain_console -lSDL -lcomdlg32 -lgdi32 -mconsole
      ;;
...

Build the SDL test suite like this:

$ cd test
$ SDL_CONFIG=/usr/local/bin/sdl-config-console ./configure
$ make

When run in the MSYS shell there is a problem with stdio flushing (I guess), so the text usually shows up at the end. It works fine in a 'Command Prompt' though, if you put a copy of 'SDL.dll' into the test directory.

The back-end can be switched between GDI and DirectX using one of the following:

$ export SDL_VIDEODRIVER=windib
$ export SDL_VIDEODRIVER=directx

The 'testvidinfo.exe' program is useful (although not very exciting!) when experimenting:

$ export SDL_VIDEODRIVER=windib
$ testvidinfo
Video driver: windib
Current display: 1280x1024, 32 bits-per-pixel
        Red Mask = 0x00ff0000
        Green Mask = 0x0000ff00
        Blue Mask = 0x000000ff
Fullscreen video modes:
        1600x1200x32
        1600x600x32
        1440x900x32
        1360x1024x32
        1360x768x32
        1280x1024x32
        1280x960x32
        1280x768x32
        1280x720x32
        1280x480x32
        1152x864x32
        1024x768x32
        848x480x32
        800x1200x32
        800x600x32
        720x576x32
        720x480x32
        640x960x32
        640x480x32
        640x400x32
        512x384x32
        400x300x32
        320x240x32
        320x200x32
A window manager is available

$ export SDL_VIDEODRIVER=directx
$ testvidinfo
Video driver: directx
Current display: 1280x1024, 32 bits-per-pixel
        Red Mask = 0x00ff0000
        Green Mask = 0x0000ff00
        Blue Mask = 0x000000ff
Fullscreen video modes:
        1600x1200x32
        1440x900x32
        1360x1024x32
        1360x768x32
        1280x1024x32
        1280x960x32
        1280x768x32
        1280x720x32
        1152x864x32
        1024x768x32
        848x480x32
        800x600x32
        720x576x32
        720x480x32
        640x480x32
        640x400x32
        512x384x32
        400x300x32
        320x240x32
        320x200x32
A window manager is available
Hardware surfaces are available (312151K video memory)
Copy blits between hardware surfaces are accelerated
Colorkey blits between hardware surfaces are accelerated
Copy blits from software surfaces to hardware surfaces are accelerated
Colorkey blits from software surfaces to hardware surfaces are accelerated
Color fills on hardware surfaces are accelerated

zlib

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following two files into the 'zips/src' directory:

The provided 'win32/Makefile.gcc' doesn't work on MinGW, so drag-and-drop the above Makefile into the 'dev/zlib-1.2.3' directory and rename it 'Makefile'. It is based on the supplied one, but the install part works correctly. I also tweaked the 'zlib1.rc' file so that the version is consistent. Drag-and-drop the replacement into the 'dev/zlib-1.2.3/win32' directory.

Build it with:

$ cd zlib-1.2.3/
$ make

Test it with:

$ example
zlib version 1.2.3 = 0x1230, compile flags = 0x55
uncompress(): hello, hello!
gzread(): hello, hello!
gzgets() after gzseek:  hello!
inflate(): hello, hello!
large_inflate(): OK
after inflateSync(): hello, hello!
inflate with dictionary: hello, hello!

Install it with:

$ make install
Now's a good chance to see what we are making. Using the Windows Explorer, navigate to the 'D:/msys/1.0/local' directory. Everything we install is put into this directory to avoid affecting MSYS itself. Look into the 'bin' directory, you should see the following files:
SDL.dll
sdl-config
sdl-config-console
zlib1.dll
If you double-click on 'zlib1.dll', and you've installed and configured Dependency Walker (see above), it should open and show you what DLLs 'zlib1.dll' depends on, and what functions 'zlib1.dll' is exporting (for other applications to use).

Don't worry about the size of the .DLL files. They contain symbol information for debugging and unlike the Microsoft toolset where you have to rebuild in release-mode, this information can be removed later using the 'strip' command-line tool.

Anyway, on to the next one.

libpng

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

The provided 'scripts/makefile.mingw' doesn't dynamically link with zlib, doesn't include the resource file and doesn't generate a correct pkg-config file, so drag-and-drop the above Makefile into the 'dev/libpng-1.2.22' directory and rename it 'Makefile'.

Build it with:

$ make

Test it with:

$ pngtest
Testing libpng version 1.2.22
   with zlib   version 1.2.3

 libpng version 1.2.22 - October 13, 2007
   Copyright (c) 1998-2007 Glenn Randers-Pehrson
   Copyright (c) 1996-1997 Andreas Dilger
   Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
 library (10222): libpng version 1.2.22 - October 13, 2007

 pngtest (10222): libpng version 1.2.22 - October 13, 2007
 png_sizeof(png_struct)=636, png_sizeof(png_info)=288
Testing pngtest.png:
 Pass 0: rwrwrwrwrwrwrwrwrw
 Pass 1: rwrwrwrwrwrwrwrwrw
 Pass 2: rwrwrwrwrwrwrwrw
 Pass 3: rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
 Pass 4: rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
 Pass 5: rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
         rwrwrwrw
 Pass 6: rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
         rwrwrwrwrw
 PASS (9782 zero samples)
 Filter 0 was used 21 times
 Filter 1 was used 15 times
 Filter 2 was used 52 times
 Filter 3 was used 10 times
 Filter 4 was used 33 times
 tIME = 7 Jun 1996 17:58:08 +0000
libpng passes test

Install it with:

$ make install
If you look into '/msys/1.0/local/bin', right-click on 'libpng12.dll', select 'Properties' and click on the 'Version' tab you should see the relevant version information. Double-click on 'libpng12.dll' to start Dependency Walker and you should see that it is linking to 'zlib1.dll'.

libjpeg

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

The 'configure' script won't build the shared (.dll) version of the library because the 'ltconfig' and 'ltmain.sh' scripts are outdated. Also, in order for the .dll to export the correct functions, a change to the 'jmorecfg.h' header file is required. The built-in tests and the install process don't work properly either, hence the replacement makefile template.

Copy the above files into the main directory making sure that you rename them and then run configure:

$ ./configure --prefix=/usr/local --enable-shared --enable-static

Copy and rename this updated libtool file (from SDL) into the main directory. Then build using this:

$ make CFLAGS="-O2 -DBUILDING_JPEG_DLL"

Test it with:

$ make check
rm -f testout*
.libs/djpeg -dct int -ppm -outfile testout.ppm  ./testorig.jpg
.libs/djpeg -dct int -bmp -colors 256 -outfile testout.bmp  ./testorig.jpg
.libs/cjpeg -dct int -outfile testout.jpg  ./testimg.ppm
.libs/djpeg -dct int -ppm -outfile testoutp.ppm ./testprog.jpg
.libs/cjpeg -dct int -progressive -opt -outfile testoutp.jpg ./testimg.ppm
.libs/jpegtran -outfile testoutt.jpg ./testprog.jpg
cmp ./testimg.ppm testout.ppm
cmp ./testimg.bmp testout.bmp
cmp ./testimg.jpg testout.jpg
cmp ./testimg.ppm testoutp.ppm
cmp ./testimgp.jpg testoutp.jpg
cmp ./testorig.jpg testoutt.jpg

Install it with:

$ mkdir /usr/local/man/man1      # missing 'man1' directory - maybe install should create it
$ make install
This is something of a mess, but until the missing autotool configuration files are recreated by some kind soul we are stuck with it. Never mind, on to the next one.

libtiff

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

In order to get libtiff to use the shared 'zlib1.dll' copy the above file into the 'D:/dev' directory and then use it on 'configure' like this:

$ cd tiff-3.8.2/
$ patch -p0 configure < ../libtiff-configure.patch
and then build and install it:
$ ./configure --prefix=/usr/local
$ make && make install

To get the tests to work do this:

$ make check
which (eventually) says that the tests failed (including some weird dialog boxes), followed by:
$ cd test
$ cp .libs/*.exe .
$ cd ..
$ make check
...
make[1]: Entering directory `/c/HOME/tiff-3.8.2/test'
PASS: ascii_tag.exe
PASS: long_tag.exe
PASS: short_tag.exe
PASS: strip_rw.exe
==================
All 4 tests passed
==================
make[1]: Leaving directory `/c/HOME/tiff-3.8.2/test'
...

SDL_image

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

In order to get SDL_image to dynamically load 'jpeg.dll', 'libpng12.dll' and 'libtiff-3.dll' copy the above file into the 'D:/dev' directory and then use it on 'configure' like this:

$ cd SDL_image-1.2.6/
$ patch -p0 configure < ../SDL_image-configure.patch

Configure it with:

$ SDL_CONFIG=/usr/local/bin/sdl-config-console ./configure
Build it with:
$ make

Test it in MSYS with:

$ showimage ../jpeg-6b/testimg.bmp
$ showimage ../jpeg-6b/testimg.jpg
$ showimage ../jpeg-6b/testimg.ppm
$ showimage ../libpng-1.2.22/pngbar.png
$ showimage ../libpng-1.2.22/pngnow.png
$ showimage ../libpng-1.2.22/pngtest.png

I found some other image types like '.tga' and '.gif' lurking on my machine, but I downloaded these [WWW] test tif images to check libtiff.

$ showimage ../libtiffpic/cramps.tif
$ showimage ../libtiffpic/cramps-tile.tif
$ showimage ../libtiffpic/dscf0013.tif
$ showimage ../libtiffpic/fax2d.tif
$ showimage ../libtiffpic/g3test.tif
$ showimage ../libtiffpic/jello.tif
$ showimage ../libtiffpic/jim___ah.tif
$ showimage ../libtiffpic/jim___cg.tif
$ showimage ../libtiffpic/jim___dg.tif
$ showimage ../libtiffpic/jim___gg.tif
$ showimage ../libtiffpic/off_l16.tif
$ showimage ../libtiffpic/off_luv24.tif
$ showimage ../libtiffpic/off_luv32.tif
$ showimage ../libtiffpic/oxford.tif
$ showimage ../libtiffpic/pc260001.tif
$ showimage ../libtiffpic/quad-jpeg.tif
$ showimage ../libtiffpic/quad-lzw.tif
$ showimage ../libtiffpic/quad-tile.tif
$ showimage ../libtiffpic/strike.tif
$ showimage ../libtiffpic/text.tif
$ showimage ../libtiffpic/ycbcr-cat.tif

Don't forget to install it:

$ make install

libogg

Download the source code using the above link and extract the files in the usual manner into the 'D:/dev' directory.

Build it with:

$ cd libogg-1.1.3/
$ ./configure
$ make
Test it with:
$ cd src
$ test_bitwise.exe 

Small preclipped packing (LSb): ok.
Null bit call (LSb): ok.
Large preclipped packing (LSb): ok.
32 bit preclipped packing (LSb): ok.
Small unclipped packing (LSb): ok.
Large unclipped packing (LSb): ok.
Single bit unclipped packing (LSb): ok.
Testing read past end (LSb): ok.

Small preclipped packing (MSb): ok.
Null bit call (MSb): ok.
Large preclipped packing (MSb): ok.
32 bit preclipped packing (MSb): ok.
Small unclipped packing (MSb): ok.
Large unclipped packing (MSb): ok.
Single bit unclipped packing (MSb): ok.
Testing read past end (MSb): ok.


$ test_framing.exe 
testing single page encoding... 0, (0), granule:0 ok.
testing basic page encoding... 0, (0), granule:0 1, (1), granule:6151 ok.
testing basic nil packets... 0, (0), granule:0 1, (1), granule:10247 ok.
testing initial-packet lacing > 4k... 0, (0), granule:0 1, (1), granule:2055 ok.
testing single packet page span... 0, (0), granule:0 1, (1), 2, (2), granule:3079 ok.
testing max packet segments... 0, (0), granule:0 1, (1), granule:261127 2, (2), granule:262151 ok.
testing very large packets... 0, (0), granule:0 1, (1), granule:1031 2, (2), 3, (3), granule:4103 ok.
testing continuation resync in very large packets... 0, 1, 2, (2), 3, (3), granule:4103 ok.
testing zero data page (1 nil packet)... 0, (0), granule:0 1, (1), granule:1031 2, (2), granule:2055 ok.
Testing loss of pages... ok.
Testing loss of pages (rollback required)... ok.
Testing sync on partial inputs... ok.
Testing sync on 1+partial inputs... ok.
Testing search for capture... ok.
Testing recapture... ok.

$ cd ..
Install it with:
$ make install

libvorbis

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

In order to get libvorbis to link copy the above file into the 'D:/dev' directory and then use it on 'lib/Makefile.am' like this:

$ cd libvorbis-1.2.0/
$ patch -p0 lib/Makefile.am < ../libvorbis-lib-makefile.am.patch

Then run the following in the main directory to update 'lib/Makefile.in':

$ aclocal && automake
Build and install using:
$ ./configure
$ make && make install

smpeg

Checkout the current version from svn using the instructions on the above page. If you don't already have 'Subversion' installed try:

[WWW] svn-1.4.5-setup.exe.

For example, in a Windows command prompt:

D:\>cd \dev
D:\dev\>svn co svn://svn.icculus.org/smpeg/trunk smpeg

Configure it with:

$ cd smpeg
$ ./autogen.sh
$ SDL_CONFIG=/usr/local/bin/sdl-config-console ./configure --disable-opengl-player
Download this patch smpeg-makefile.patch to make it build the DLL, copy it into the 'D:/dev' directory and apply it like this:
$ patch -p0 Makefile < ../smpeg-makefile.patch
Build it with:
$ make
Test it with:
$ plaympeg ../Media/butterfly.mpg
$ plaympeg ../Media/lake.mpg
$ plaympeg ../Media/MIX2.2.mpg
$ plaympeg --novideo ../Media/piano.mp3
$ plaympeg --novideo ../Media/roadhouse_blues.mp3
Install it with:
$ make install

SDL_mixer

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

In order to get SDL_mixer to dynamically load 'libvorbis' and 'smpeg.dll' copy the above file into the 'D:/dev' directory and then use it on 'configure' like this:

$ cd SDL_mixer-1.2.8/
$ patch -p0 configure < ../SDL_mixer-configure.patch
Then configure and build using:
$ SDL_CONFIG=/usr/local/bin/sdl-config-console ./configure
$ make
Test it with:
$ cd build
$ playmus ../../Media/wonrace1-jt.it
$ playmus ../../Media/gtrsolo2.mid
$ playmus ../../Media/Chipgene.mod
$ playmus ../../Media/track1.mp3
$ playmus ../../Media/keepgoin.ogg
$ playmus ../../Media/bizzarre-funfair.s3m
$ playmus ../../Media/wahoo.wav
$ cd ..
Install it with:
$ make install

freetype

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

In order to get the freetype DLL to use 'zlib1.dll' copy the above file into the 'D:/dev' directory and then use it on 'configure' like this:

$ cd freetype-2.3.5/
$ patch -p0 builds/unix/configure < ../freetype-zdll-configure.patch

Build and install with:

$ ./configure && make && make install

SDL_ttf

Download the source code using the above link and extract the files in the usual manner into the 'D:/dev' directory.

Build it with:

$ cd SDL_ttf-2.0.9/
$ SDL_CONFIG=/usr/local/bin/sdl-config-console ./configure
$ make

Test it with:

$ showfont D:/windows/fonts/arial.ttf 32 "Hello world."
(or showfont D:/winnt/fonts/arial.ttf 32 "Hello world.")
$ showfont -solid D:/windows/fonts/arial.ttf 32 "Hello world."
(or showfont -solid D:/winnt/fonts/arial.ttf 32 "Hello world.")
$ glfont D:/windows/fonts/arial.ttf 32 "Hello world."
(or glfont D:/winnt/fonts/arial.ttf 32 "Hello world.")

Install it with:

$ make install

libiconv

If gettext isn't already installed (it isn't if you start from scratch) you need to compile/install libiconv twice, the second time after compiling/installing gettext (which uses libiconv).

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

In order to build a libiconv.dll containing version information copy the above file into the 'D:/dev' directory and then use it on 'lib/Makefile.in' like this:

$ cd libiconv-1.11/
$ patch -p0 < ../libiconv-use-rc.patch

Build and install it with:

$ ./configure
$ make
$ make install

Test it with:

$ make check

which takes a while to run.

gettext

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

There are some symbol clashes with various #defines in "winnt.h". In order to work round this, copy the above file into the 'D:\dev' directory and then use like this:

$ cd gettext-0.16.1/
$ patch -p0 < ../gettext-symbol-clash.patch

Build and install it with:

$ ./configure
$ make
$ make install

This particular library takes a long time to build and install especially under MinGW/MSYS. I'm glad I moved development onto something faster then a PIII.

Now that that's done it's time to rebuild libiconv.

$ cd ../libiconv-1.11
$ make clean && make distclean
$ ./configure && make && make install

fltk

Build and install it with:

$ cd fltk-1.1.7/
$ ./configure && make && make install

There are some warnings about OpenGL in the configure step, but it all builds OK as a static library (not a DLL).

There are 60+ test programs in the 'test' directory including a complete Sudoku game.

xmllib2

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

To make it use the zlib DLL copy the above file into the 'D:\dev' directory and then use like this:

$ cd libxml2-2.6.30/
$ patch -p0 < ../libxml2-configure-use-zdll.patch
$ ./configure

Build with:

$ make
It takes quite a while to build.

Test with (not recommended):
$ make tests
I got huge amounts of output from this, and it takes a *very* long time to run, especially the API regression tests - the machine just sits there with 0% CPU usage, almost no disk activity and the console showing:
## Running the API regression tests this may take a little while
Eventually the "Relax-NG regression tests" caused segfaults in "sh.exe" and at that point I had to abandon the tests using the reset button!

Install with:
 $ make install

libart

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory.

Build and install it with:

$ cd libart_lgpl-2.3.19/
$ ./configure && make && make install

fontconfig

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

The first patch (from the GTK+ project) makes fontconfig use the users temporary-file location for creating caches, and fixes a few other bugs whilst it's at it. The second patch makes fontconfig use the registry to locate the system fonts rather than building a path using GetWindowsDirectory() and appending 'fonts' to it. Fixes a Citrix related problem. Copy the above files into the 'D:\dev' directory and then use like this:

$ cd fontconfig-2.4.2/
$ patch -p0 < ../fontconfig-2.4.2-tml-20071015.diff
$ patch -p0 < ../fontconfig-2.4.2-jfp-20080617.diff
$ aclocal -I /usr/local/share/aclocal && autoconf && automake

Build and install it with:

$ ./configure --prefix=/usr/local --enable-libxml2 --disable-docs
$ make && make install

glib

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory.

Build and install it with:

$ cd glib-2.14.2/
$ ./configure
$ make && make install

cairo

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

There are some .... In order to work round this, copy the above file into the 'D:\dev' directory and then use like this:

$ cd cairo-1.4.10/
$ patch -p0 < ../cairo-configure-use-zdll.patch

Build and install it with:

$ ./configure
$ make && make install

pango

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory.

Build and install it with:

$ cd pango-1.17.5/
$ ./configure
$ make
$ make install

A couple of spurious error dialog boxes appear related to the 'pango-querymodules' wrapper script, but it seems that they can be safely ignored if building on Win2K.

If building on XP, it is necessary to edit 'modules/Makefile' and set RUN_QUERY_MODULES_TEST to false:

#RUN_QUERY_MODULES_TEST = true
RUN_QUERY_MODULES_TEST = false
all: all-recursive

libcroco

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory.

Build and install it with:

$ cd libcroco-0.6.1/
$ ./configure
$ make
$ make install

bzip2

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

The provided Makefile doesn't install correctly so drag-and-drop the above Makefile into the 'dev/bzip2-1.0.4/' directory and rename it 'Makefile'.

Build and install it with (there is no configure step):

$ cd bzip2-1.0.4/
$ make
$ make install

libgsf

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following files into the 'zips/src' directory:

To build and install expat-2.0.1, extract the files into 'D:\dev' in the usual manner. Then build and install it like this:

$ cd expat-2.0.1/
$ ./configure
$ make && make install

To install XML::Parser, extract the files into 'D:\dev' in the usual manner. Then install like this (the archive includes pre-compiled binaries):

$ cd XML-Parser-2.34/
$ make install

To build libgsf with the zlib DLL, download the following patch for configure:


Copy the above file into 'D:/dev' and use it like this:

$ cd libgsf-1.14.7/
$ patch -p0 < ../libgsf-configure-zdll-bzip2.patch

Build and install libgsf with:

$ ./configure --without-python
$ make && make install
I originaly built without the '--without-python' which (probably) worked because I had a win32 version of Python installed (thanks TOYAMA Shin-ichi!).

libatk

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory.

Build and install it with:

$ cd atk-1.19.6/
$ ./configure
$ make && make install

GTK+

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

There is a problem with the MSYS shell when it calls pkg-config whilst interpolating strings and the return value (1, or CTRL-A) ends up in the string(!). In order to work round this, copy the above file into the 'D:\dev' directory and then use like this:

$ cd gtk+-2.10.14/
$ patch -p0 < ../gtk+-configure-pkgconfig-zdll.patch

I found that exiting the MSYS shell and restarting it before building helped (see below).

Build and install it with:

$ ./configure --with-gdktarget=win32
$ make
$ make install

I initially had problems at the 'make install' step with an error in the 'gdk-pixbuf' directory involving the 'install-libLTLIBRARIES' step. Restarting MSYS seemed to work.

At this point I thought I'd try the 'gtk-demo' application. Before running it you need to create a couple of configuration files:

$ pango-querymodules > /usr/local/etc/pango/pango.modules
$ gdk-pixbuf-query-loaders > /usr/local/etc/gtk-2.0/gdk-pixbuf.loaders
$ gtk-demo

Everything seemed to work OK for me.

librsvg

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory.

I found that exiting the MSYS shell and restarting it before building helped (see below).

Build and install it with:

$ cd librsvg-2.18.2/
$ ./configure
$ make
$ make install

I initially had problems at the 'make install' step with an error (similar to the one with GTK+ above) in the 'gdk-engine' directory involving the 'install-engineLTLIBRARIES' step. Restarting MSYS seemed to work.

SDL_Pango

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

The first patch fixes the SDL version detection and builds a working libtool. The second patch adds some extra (required) functionality to SDL_Pango. Copy the above files into the 'D:\dev' directory and then use them like this:

$ cd SDL_Pango-0.1.2/
$ patch -p0 < ../SDL_Pango-configure.patch
$ patch -p0 < ../SDL_Pango-0.1.2-API-adds.patch

Build and install it with:

$ ./configure
$ make && make install

FriBidi

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory and then download the following file into the 'zips/src' directory:

The patch fixes a few missing DLL data exports and makes some macro tricks in 'wcwidth.c' work when FRIBIDI_EXPORTS is defined (see below). Copy the above file into the 'D:\dev' directory and then use them like this:

$ cd fribidi-0.10.9/
$ patch -p1 < ../fribidi-win32.patch

Build and install it with:

$ CFLAGS="-DFRIBIDI_EXPORTS -g -O2" ./configure
$ make && make install

Pre-built Dependencies


You need to install MinGW/MSYS to use these pre-built files.

Download the dependencies [COMING SOON!] into 'zips/tools/tuxpaint' and extract them in-place by right-clicking and choosing 'Extract Here'. Then drag-and-drop the directory 'local' into 'd:/msys/1.0' and skip to the Tux Paint section.

Tux Paint

First we need to get the source code, you can download a tarball (source-code bundle) or check-out the latest version from CVS.


We'll use CVS. Unless you are already a Tux Paint developer you should use the publicly available, read-only pserver in a Windows Command Prompt like this:

C:\>d:
D:\>cd \dev
D:\dev>cvs -d:pserver:anonymous@tuxpaint.cvs.sourceforge.net:/cvsroot/tuxpaint login

You might get a warning 'cvs login: warning: failed to open d:\home\.cvspass for reading: No such file or directory'. Re-running the above line should work without warnings.

D:\dev>cvs -z3 -d:pserver:anonymous@tuxpaint.cvs.sourceforge.net:/cvsroot/tuxpaint  co -P tuxpaint

If building Tux Paint prior to version 0.9.20, we should be able to build and install it (using the MSYS shell) like this:

$ cd tuxpaint
$ make win32
$ make install-win32

If building Tux Paint version 0.9.20 and beyond (the Makefile was greatly improved), we should be able to build and install it (using the MSYS shell) like this:

$ cd tuxpaint
$ make
$ make install

Run it from inside MSYS like this:

$ tuxpaint

Tux Paint Stamps

First we need to get the source code, you can download a tarball (source-code bundle) or check-out the latest version from CVS.


We'll use CVS. Refer to the above instructions and then check-out the latest files in a Windows Command Prompt like this:

D:\dev>cvs -z3 -d:pserver:anonymous@tuxpaint.cvs.sourceforge.net:/cvsroot/tuxpaint  co -P tuxpaint-stamps

Now we should be able to install it (nothing to compile), using the MSYS shell like this:

$ cd tuxpaint-stamps
$ make install-all

If you run Tux Paint again you should see a lot more stamps.

Tux Paint Config

First we need to get the source code, you can download a tarball (source-code bundle) or check-out the latest version from CVS.


We'll use CVS. Refer to the above instructions and then check-out the latest files in a Windows Command Prompt like this:

D:\dev>cvs -z3 -d:pserver:anonymous@tuxpaint.cvs.sourceforge.net:/cvsroot/tuxpaint  co -P tuxpaint-config

Now we should be able to build and install it, using the MSYS shell, like this:

$ cd tuxpaint-config
$ make win32
$ make install-win32

Tux Paint Installer

To build a version of Tux Paint that can be run from anywhere (and packaged with the installer):

$ cd tuxpaint
$ make bdist-win32

This rebuilds everything and gathers all the required files together into the 'tuxpaint/win32/bdist/' directory.

To build the installer you'll need Inno Setup Quickstart Pack. Download and install it. Uncheck the 'ISTool' option (optional), check the 'Inno Setup Preprocessor' option (required), uncheck the 'Download and install encryption support' (optional) and then let it install. You'll also need:


Download these files and put them into '/Program Files/Inno Setup 5/Languages/'.

When ready, right-click on the 'tuxpaint/win32/tuxpaint.iss' file and select 'Compile'. This will build the installer and place it in the 'tuxpaint/win32/' directory.

















Valid HTML 4.01!