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

Recent changes [2009-12-14]

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: FriBidi: librsvg:
SDL_Pango:

(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.6.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.11.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.
Create a directory 'D:\home' (check the drive letter).

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

# Set CC for the Tux Paint Makefile
export set CC=gcc

# 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] 7z465.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 'autoconf2.5-2.64-1-mingw32-bin.tar.lzma' and select 'Extract here'. You should see a file 'autoconf2.5-2.64-1-mingw32-bin.tar' appear, right-click on this file and select 'Extract here'.

This should create a set of directories: 'bin' and 'share'. Repeat the above process for 'autoconf-7-1-mingw32-bin.tar.lzma', 'automake1.11-1.11-1-mingw32-bin.tar.lzma', 'automake-4-1-mingw32-bin.tar.lzma', 'libtool-2.2.7a-1-mingw32-bin.tar.lzma', 'm4-1.4.13-1-msys-1.0.11-bin.tar.lzma', 'bash-3.1.17-2-msys-1.0.11-bin.tar.lzma', 'directx-devel.tar.gz' and 'opengl-devel.tar.gz'. 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:/MinGW/'. You will get warnings about the directories already existing, just let it proceed.

When finished, delete all the intermediate '.tar' files.

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

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

Check everything went OK by starting the MSYS shell and typing the line after the '$' followed by Enter:
$ automake --version
automake (GNU automake) 1.11
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Tom Tromey 
       and Alexandre Duret-Lutz .

$ libtool --version
libtool (GNU libtool 1.3110 2009-07-01) 2.2.7a
Written by Gordon Matzigkeit , 1996

Copyright (C) 2009 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.14/
$ ./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 WinMain, at around line 325, 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  -mconsole
      ;;
    --static-libs)
#    --libs|--static-libs)
      echo -L${exec_prefix}/lib  -lmingw32 -lSDLmain_console -lSDL  -mconsole  -liconv -lm -luser32 -lgdi32 -lwinmm -ldxguid
      ;;
...

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.41' directory and rename it 'Makefile'.

Build it with:

$ make

Test it with:

$ pngtest

 Testing libpng version 1.2.41
   with zlib   version 1.2.3

libpng version 1.2.41 - December 3, 2009
Copyright (c) 1998-2009 Glenn Randers-Pehrson
Copyright (c) 1996-1997 Andreas Dilger
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
 library (10241): libpng version 1.2.41 - December 3, 2009

 pngtest (10241): libpng version 1.2.41 - December 3, 2009
 sizeof(png_struct)=648, 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.

Configure and build it with:

$ ./configure
$ make

Test it with:

$ make check
make  check-local
make[1]: Entering directory `/c/tpdev/jpeg-7'
rm -f testout*
./djpeg -dct int -ppm -outfile testout.ppm  ./testorig.jpg
./djpeg -dct int -bmp -colors 256 -outfile testout.bmp  ./testorig.jpg
./cjpeg -dct int -outfile testout.jpg  ./testimg.ppm
./djpeg -dct int -ppm -outfile testoutp.ppm ./testprog.jpg
./cjpeg -dct int -progressive -opt -outfile testoutp.jpg ./testimg.ppm
./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
make[1]: Leaving directory `/c/tpdev/jpeg-7'

Install it with:

$ make install
Wow! Much easier than the old jpeg-6b version.

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.9.2/
$ patch -p0 configure < ../libtiff-3.9.2-configure.patch
and then build and install it:
$ ./configure
$ make && make install

Test it like this:

$ make check
...
make[3]: Entering directory `/c/HOME/tiff-3.9.2/test'
PASS: ascii_tag.exe
PASS: long_tag.exe
PASS: short_tag.exe
PASS: strip_rw.exe
==================
All 4 tests passed
==================
make[3]: Leaving directory `/c/HOME/tiff-3.9.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 'libjpeg-7.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.10/
$ patch -p0 configure < ../SDL_image-1.2.10-configure.patch

Configure it with:

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

Test it in MSYS with:

$ showimage ../jpeg-7/testimg.bmp
$ showimage ../jpeg-7/testimg.jpg
$ showimage ../jpeg-7/testimg.ppm
$ showimage ../libpng-1.2.41/pngbar.png
$ showimage ../libpng-1.2.41/pngnow.png
$ showimage ../libpng-1.2.41/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.4/
$ ./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 the libvorbis tests to work copy the above file into the 'D:/dev' directory and then use it on 'test/Makefile.in' like this:

$ cd libvorbis-1.2.3/
$ patch -p1 test/Makefile.in < ../libvorbis-1.2.3-Makefile.in.patch
Build using:
$ ./configure
$ make
Test using:
$ make check
...
make[2]: Leaving directory `/c/tpdev/libvorbis-1.2.3/lib'
./test_sharedbook.exe
Dequant test 1... OK
Dequant test 2... OK
Dequant test 3... OK
Dequant test 4... OK
Dequant test 5... OK
...
make[1]: Entering directory `/c/tpdev/libvorbis-1.2.3/test'
./test
    vorbis_44100.ogg     : ok
    vorbis_48000.ogg     : ok
    vorbis_32000.ogg     : ok
    vorbis_22050.ogg     : ok
    vorbis_16000.ogg     : ok
    vorbis_96000.ogg     : ok
...
Install using:
$ 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
$ PKG_CONFIG= SDL_CONFIG=/usr/local/bin/sdl-config-console ./configure --disable-opengl-player --disable-gtk-player
Download this patch smpeg-makefile-20091215.patch to make it build the DLL, copy it into the 'D:/dev' directory and apply it like this:
$ patch -p0 Makefile < ../smpeg-makefile-20091215.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

libmikmod (optional)

If you want MOD file support (not required for Tux Paint) extract the archive 'libmikmod-3.1.12.zip' from SDL_mixer-1.2.11 below into the 'D:/dev' directory. Download the above patch to get it to build and generate a DLL using MinGW/MSYS, and use it like this:
$ cd libmikmod-3.1.12
$ patch -p0 <../libmikmod-3.1.12.patch
Configure it like this:
$ ./configure
Now copy the file 'SDL_mixer-1.2.11/libtool' into the 'libmikmod-3.1.12.patched' directory, then build and install like this:
$ make && make install

FLAC (optional)

If you want FLAC file support (not required for Tux Paint) extract the archive above into the 'D:/dev' directory. Download the above patch to get it to build and generate a DLL using MinGW/MSYS, and use it like this:
$ cd flac-1.2.1
$ patch -p0 <../flac-1.2.1.patch
Configure it like this:
$ ./configure --disable-xmms-plugin --disable-cpplibs --disable-thorough-tests --disable-exhaustive-tests
Build and install like this:
$ make && make install

SDL_mixer

Download the source code using the above link, extract the files in the usual manner into the 'D:/dev' directory.
Back to SDL_mixer. Download the following file into the 'zips/src' directory:

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

$ cd SDL_mixer-1.2.11/
$ patch -p0 configure < ../SDL_mixer-1.2.11-configure.patch
Then configure and build using:
$ PKG_CONFIG= SDL_CONFIG=/usr/local/bin/sdl-config-console ./configure
$ make
Test it with:
$ cd build/.libs
$ 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.11/
$ patch -p0 < ../freetype-2.3.11-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 and extract the files in the usual manner into the 'D:/dev' directory.

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 undefined exports that need removing, copy the above file into the 'D:\dev' directory and then use like this:

$ cd gettext-0.17/
$ patch -p0 < ../gettext-0.17-exports.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.13.1
$ make clean && make distclean
$ ./configure && make && make install

fltk

Build and install it with:

$ cd fltk-1.1.9/
$ ./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.

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
If you want to build a version of Tux Paint for win9x/ME systems then you are done building libraries at this point and should skip to the Tux Paint instructions below.

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.7.6/
$ patch -p0 < ../libxml2-2.7.6-configure-use-zdll.patch
$ ./configure

Build and install with:

$ make && make install
It takes quite a while to build.

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.20/
$ ./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 patch makes fontconfig use the registry to locate the system fonts rather than building a path using GetWindowsDirectory()/GetSystemWindowsDirectory() and appending 'fonts' to it. Fixes a Citrix related problem. Copy the above file into the 'D:\dev' directory and then use like this:

$ cd fontconfig-2.8.0/
$ patch -p0 < ../fontconfig-2.8.0-jfp-20091224.diff

Build and install it with:

$ ./configure --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.22.3/
$ ./configure
$ make && make install

cairo

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

Build and install pixman with:

$ cd pixman-0.16.4
$ ./configure && make && make install
Download the following file into the 'zips/src' directory:

The patch causes cairo to link to zdll which allows it to build a DLL. Copy the above file into the 'D:\dev' directory and then use like this:

$ cd ../cairo-1.8.8
$ patch -p0 < ../cairo-1.8.8-configure.patch
$ ./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.26.2/
$ ./configure && make && make install


THE FOLLOWING IS *** UNDER CONSTRUCTION *** and probably doesn't work anymore (25th December 2009)


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.



THE ABOVE IS *** UNDER CONSTRUCTION *** and probably doesn't work anymore (25th December 2009)


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

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!