Tux Paint 0.9.21c/22 (9x/ME/2K/XP/Vista/7) MinGW/MSYS

Instructions for installing MinGW/MSYS

Instructions for building all these Libraries:

Gettext:
SDL:
SDL_image:
SDL_mixer:
SDL_ttf:
FLTK: FriBidi: gperf: 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 and MSYS. Fortunately, this process has been greatly improved recently.

Also, if you just want to get on with it, I've provided a snap-shot with most of the following already installed and updated. Skip to the quick install.

MinGW/MSYS official install


Download the latest version of mingw-get-0.3-mingw32-alpha-2-bin.zip and extract the contents into 'C:\mingw\'.
Add the path 'C:\mingw\bin\' to the PATH environment variable by opening the control panel, clicking the 'System' icon (on Win7, you need to click on the 'Advanced system settings' option at this point) and then selecting the 'Advanced' tab on the 'System Properties' panel. Click on the 'Environment Variables' button, and then edit the PATH variable in the 'System variables' section. Add the following to the end of the PATH:
;C:\mingw\bin 
Notice the semi-colon at the start, this separates each path. For example, mine looks like this:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\QT Lite\QTSystem;C:\mingw\bin
Now open a Windows command prompt and run the following:
mingw-get install gcc g++ msys-base mingw-dtk msys-wget msys-autoconf msys-autogen msys-automake msys-unzip
First the program downloads up-to date catalogs, then it downloads the packages to satisfy the requested install, followed by an installation procedure - all automated.

Let's get the MSYS shell working. Locate the file 'msys.bat' in the directory 'C:\mingw\msys\1.0\', select it, and then using the right-mouse button (the other one) drag-and-drop it onto the desktop. A menu will pop-up when you release the mouse button: select 'Create shortcuts here'. Now, right-click on the icon (it will have a default appearance and look a bit odd) and select 'Properties' at the bottom: this will show a panel. Make sure the 'Shortcut' tab is selected and click on the 'Change Icon...' button. You may get a warning about the file 'msys.bat' not having an icon, just click OK. Now browse to the 'C:\mingw\msys\1.0\' directory using the 'Browse...' button and select either the 'm.ico' or the 'msys.ico' file and 'Ok' your way out. I use the newer 'msys.ico' file myself.

I think the MSYS shell inherits the dimensions of the Windows command prompt, so mine is 100x50 and has a 3000 line scrollback buffer. If you want to change yours, click on the system menu icon at the top-left, choose 'Defaults' and then select the 'Layout' tab. Change both widths to 100, change the 'Screen Buffer Size' height to 3000 (or more) and set 'Window size' height to 50.

Try a simple command like 'ls' and use 'exit' to close it.

If you've got any GNU tools installed like UnxUtils or GNUWin32 or languages like Perl or Python it is useful to disable them now to avoid 'weird' problems. I do this by removing them from the PATH whilst working with MSYS.

Start the MSYS shell again. Now we'll make a HOME directory, make a directory to build all the libraries and applications in, add HOME to the environment variables, create a CVS '.cvsrc' config file and create a '.profile' file that will set some essential environment variables for the build process:
mkdir /c/home
mkdir /c/tp-dev
mkdir /c/tp-dev/patches
mkdir /c/tp-dev/zips

cat >/c/home/.profile <<EOF
# points builds at their dependencies
export set LIBRARY_PATH=/usr/local/bin:/usr/local/lib:/c/mingw/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 "/c/tp-dev"
EOF

cat >/c/home/.cvsrc <<EOF
diff -uN
rdiff -u
update -dP
cvs -q -z3
EOF

exit
To add the HOME environment variable, open the control panel, click the 'System' icon (on Win7, you need to click on the 'Advanced system settings' option at this point) and then select the 'Advanced' tab on the 'System Properties' panel. Click on the 'Environment Variables' button, and then click 'New' in the 'User variables...' section. Set the Variable name to HOME, set the path to 'C:\home' and 'Ok' your way out.

We are almost done, but we still need some header files and tools for building SDL, a working 'pkg-config' and a 'wspiapi.h' modified to work with gcc. Also, it turns out that some of the mingw libtool archive files (*.la) are wrong. Open the MSYS shell and run the following commands:
wget -c -O/c/tp-dev/zips/directx-devel.tar.gz http://www.libsdl.org/extras/win32/common/directx-devel.tar.gz
wget -c -O/c/tp-dev/zips/opengl-devel.tar.gz http://www.libsdl.org/extras/win32/common/opengl-devel.tar.gz
wget -c -O/c/tp-dev/zips/nasm.exe http://www.libsdl.org/extras/win32/mingw32/nasm.exe
wget -c -O/c/tp-dev/zips/msys-pkg-config-win32-1.zip http://johnnypops.co.uk/tuxpaint/msys-pkg-config-win32-1.zip
wget -c -O/c/tp-dev/zips/WSPiApi.h http://johnnypops.co.uk/tuxpaint/WSPiApi.h
wget -c -O/c/tp-dev/zips/mingw-msys-la-fixes.tar.gz http://johnnypops.co.uk/tuxpaint/mingw-msys-la-fixes.tar.gz
tar xzf /c/tp-dev/zips/directx-devel.tar.gz -C /c/mingw/
tar xzf /c/tp-dev/zips/opengl-devel.tar.gz -C /c/mingw/
unzip -d/c/mingw /c/tp-dev/zips/msys-pkg-config-win32-1.zip
cp /c/tp-dev/zips/nasm.exe /c/mingw/bin/
cp /c/tp-dev/zips/WSPiApi.h /c/mingw/include/
tar xzf /c/tp-dev/zips/mingw-msys-la-fixes.tar.gz -C /c/mingw/lib/
Skip to check installation.

MinGW/MSYS Quick Install

Download the above file and use 7zip to extract it into your 'C' drive. It will create a single directory: 'C:\mingw\'. Add the path 'C:\mingw\bin\' to the PATH environment variable by opening the control panel, clicking the 'System' icon (on Win7, you need to click on the 'Advanced system settings' option at this point) and then selecting the 'Advanced' tab on the 'System Properties' panel. Click on the 'Environment Variables' button, and then edit the PATH variable in the 'System variables' section. Add the following to the end of the PATH:
;C:\mingw\bin 
Notice the semi-colon at the start, this separates each path. For example, mine looks like this:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\QT Lite\QTSystem;C:\mingw\bin
Let's get the MSYS shell working. Locate the file 'msys.bat' in the directory 'C:\mingw\msys\1.0\', select it, and then using the right-mouse button (the other one) drag-and-drop it onto the desktop. A menu will pop-up when you release the mouse button: select 'Create shortcuts here'. Now, right-click on the icon (it will have a default appearance and look a bit odd) and select 'Properties' at the bottom: this will show a panel. Make sure the 'Shortcut' tab is selected and click on the 'Change Icon...' button. You may get a warning about the file 'msys.bat' not having an icon, just click OK. Now browse to the 'C:\mingw\msys\1.0\' directory using the 'Browse...' button and select either the 'm.ico' or the 'msys.ico' file and 'Ok' your way out. I use the newer 'msys.ico' file myself.

I think the MSYS shell inherits the dimensions of the Windows command prompt, so mine is 100x50 and has a 3000 line scrollback buffer. If you want to change yours, click on the system menu icon at the top-left, choose 'Defaults' and then select the 'Layout' tab. Change both widths to 100, change the 'Screen Buffer Size' height to 3000 (or more) and set 'Window size' height to 50.

Now we'll make a HOME directory, make a directory to build all the libraries and applications in, add HOME to the environment variables, create a CVS '.cvsrc' config file and create a '.profile' file that will set some essential environment variables for the build process:
mkdir /c/home
mkdir /c/tp-dev
mkdir /c/tp-dev/patches
mkdir /c/tp-dev/zips

cat >/c/home/.profile <<EOF
# points builds at their dependencies
export set LIBRARY_PATH=/usr/local/bin:/usr/local/lib:/c/mingw/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 "/c/tp-dev"
EOF

cat >/c/home/.cvsrc <<EOF
diff -uN
rdiff -u
update -dP
cvs -q -z3
EOF

exit
To add the HOME environment variable, open the control panel, click the 'System' icon (on Win7, you need to click on the 'Advanced system settings' option at this point) and then select the 'Advanced' tab on the 'System Properties' panel. Click on the 'Environment Variables' button, and then click 'New' in the 'User variables...' section. Set the Variable name to HOME, set the path to 'C:\home' and 'Ok' your way out.

MinGW/MSYS Check Installation


Let's check the versions of the autotools stuff:
autoconf --version && automake --version && aclocal --version && libtool --version && m4 --version
Should display this:
autoconf (GNU Autoconf) 2.67
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+/Autoconf: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David J. MacKenzie and Akim Demaille.
automake (GNU automake) 1.11.1
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html>
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 <tromey@redhat.com>
       and Alexandre Duret-Lutz <adl@gnu.org>.
aclocal (GNU automake) 1.11.1
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html>
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 <tromey@redhat.com>
       and Alexandre Duret-Lutz <adl@gnu.org>.
libtool (GNU libtool) 2.4
Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996

Copyright (C) 2010 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.
m4 (GNU M4) 1.4.14
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Rene' Seindal.
Finally, let's check 'gcc', 'bash', 'nasm' and 'pkg-config':
gcc --version && bash --version && nasm -v && echo "pkg-config:" `pkg-config --version`
Should display this:
gcc.exe (GCC) 4.5.2
Copyright (C) 2010 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.

GNU bash, version 3.1.17(1)-release (i686-pc-msys)
Copyright (C) 2005 Free Software Foundation, Inc.
NASM version 0.98.31 compiled on May 18 2002
pkg-config: 0.20
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.

You might find it useful to install the 7zip archive tool, it will expand most *nix-style archives: 7-zip Home Page

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.

gettext

First we need to get some boring bits installed locally: gettext and libiconv We'll need to compile/install gettext twice, the second time after compiling/installing libiconv (which uses gettext, I think).

wget -c -O/c/tp-dev/zips/gettext-0.18.1.1.tar.gz http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.1.1.tar.gz
tar xzf /c/tp-dev/zips/gettext-0.18.1.1.tar.gz -C /c/tp-dev
cd /c/tp-dev/gettext-0.18.1.1
./configure --enable-threads=win32 && 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.

libiconv

wget -c -O/c/tp-dev/zips/libiconv-1.13.1.tar.gz http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xzf /c/tp-dev/zips/libiconv-1.13.1.tar.gz -C /c/tp-dev
cd /c/tp-dev/libiconv-1.13.1/
./configure && make && make install

Test it with:

$ make check

which takes a while to run.

Now it's time to build gettext again:

rm -rf /c/tp-dev/gettext-0.18.1.1/
tar xzf /c/tp-dev/zips/gettext-0.18.1.1.tar.gz -C /c/tp-dev
cd /c/tp-dev/gettext-0.18.1.1
./configure --enable-threads=win32 && make && make install

SDL

SDL itself builds fine without any patches, but for various test programs, it is useful if console output works (it is supressed by default). The following instructions build SDL twice, once normally, the second time after a patch to enable console output. This produces the extra files 'sdl-config-console' and 'libSDLmain_console.a'.

Using the MSYS shell, run the following commands:

wget -c -O/c/tp-dev/zips/SDL-1.2.14.tar.gz http://www.libsdl.org/release/SDL-1.2.14.tar.gz
wget -c -O/c/tp-dev/patches/sdl-stdio-redirect.patch http://johnnypops.co.uk/tuxpaint/sdl-stdio-redirect.patch
wget -c -O/c/tp-dev/patches/sdl-config-console http://johnnypops.co.uk/tuxpaint/sdl-config-console
tar xzf /c/tp-dev/zips/SDL-1.2.14.tar.gz -C /c/tp-dev
cd /c/tp-dev/SDL-1.2.14/
./configure && make && make install
patch -p0 < /c/tp-dev/patches/sdl-stdio-redirect.patch
make
cp build/libSDLmain.a /usr/local/lib/libSDLmain_console.a
cp /c/tp-dev/patches/sdl-config-console /usr/local/bin/

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

The supplied 'Makefile' doesn't work so I've provided a modified version.

Using the MSYS shell, run the following commands:

wget -c -O/c/tp-dev/zips/zlib-1.2.5.tar.bz2 http://zlib.net/zlib-1.2.5.tar.bz2
wget -c -O/c/tp-dev/patches/Makefile-zlib-1.2.5-mingw http://johnnypops.co.uk/tuxpaint/Makefile-zlib-1.2.5-mingw
tar xjf /c/tp-dev/zips/zlib-1.2.5.tar.bz2 -C /c/tp-dev
cd /c/tp-dev/zlib-1.2.5
cp /c/tp-dev/patches/Makefile-zlib-1.2.5-mingw ./Makefile
make && make install

Test it with:

$ example
zlib version 1.2.5 = 0x1250, 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!

$ example_d
zlib version 1.2.5 = 0x1250, 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!
Now's a good chance to see what we are making. Using the Windows Explorer, navigate to the 'c:/mingw/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

The supplied 'configure' script doesn't work properly so I've provided a modified 'Makefile' that uses the zlib DLL and the resource script.
wget -c -O/c/tp-dev/zips/libpng-1.2.44.tar.gz ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.44.tar.gz
wget -c -O/c/tp-dev/patches/Makefile-libpng-1.2.44-mingw http://johnnypops.co.uk/tuxpaint/Makefile-libpng-1.2.44-mingw
tar xzf /c/tp-dev/zips/libpng-1.2.44.tar.gz -C /c/tp-dev
cd /c/tp-dev/libpng-1.2.44/
cp /c/tp-dev/patches/Makefile-libpng-1.2.44-mingw ./Makefile
make && make install

Test it with:

$ pngtest

 Testing libpng version 1.2.44
   with zlib   version 1.2.5

libpng version 1.2.44 - June 26, 2010
Copyright (c) 1998-2010 Glenn Randers-Pehrson
Copyright (c) 1996-1997 Andreas Dilger
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
 library (10244): libpng version 1.2.44 - June 26, 2010

 pngtest (10244): libpng version 1.2.44 - June 26, 2010
 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
If you look into 'c:/mingw/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

wget -c -O/c/tp-dev/zips/jpegsrc.v8c.tar.gz http://www.ijg.org/files/jpegsrc.v8c.tar.gz
tar xzf /c/tp-dev/zips/jpegsrc.v8c.tar.gz -C /c/tp-dev
cd /c/tp-dev/jpeg-8c
./configure && make && make install

Test it with:

$ make check
make  check-local
make[1]: Entering directory `/c/tp-dev/jpeg-8c'
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/tp-dev/jpeg-8c'
Wow! Much easier than the old jpeg-6b version.

libtiff

By default, the library links to the static version of zlib. I supply a patch to make it link with the zlib DLL.
wget -c -O/c/tp-dev/zips/tiff-3.9.5.tar.gz ftp://ftp.remotesensing.org/pub/libtiff/tiff-3.9.5.tar.gz
wget -c -O/c/tp-dev/patches/tiff-3.9.5-configure-mingw.patch http://johnnypops.co.uk/tuxpaint/tiff-3.9.5-configure-mingw.patch
tar xzf /c/tp-dev/zips/tiff-3.9.5.tar.gz -C /c/tp-dev
cd /c/tp-dev/tiff-3.9.5
patch -p0 < /c/tp-dev/patches/tiff-3.9.5-configure-mingw.patch
./configure && make && make install

Test it like this:

$ make check
...
make  check-TESTS
make[2]: Entering directory `/c/tp-dev/tiff-3.9.5/test'
make[3]: Entering directory `/c/tp-dev/tiff-3.9.5/test'
PASS: ascii_tag.exe
PASS: long_tag.exe
PASS: short_tag.exe
PASS: strip_rw.exe
==================
All 4 tests passed
==================
...

SDL_image

In order to get SDL_image to dynamically load 'libjpeg-8.dll', 'libpng12.dll' and 'libtiff-3.dll' I have provided a patch to 'configure'.
wget -c -O/c/tp-dev/zips/SDL_image-1.2.10.tar.gz http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz
wget -c -O/c/tp-dev/patches/SDL_image-1.2.10-configure.patch http://johnnypops.co.uk/tuxpaint/SDL_image-1.2.10-configure.patch
tar xzf /c/tp-dev/zips/SDL_image-1.2.10.tar.gz -C /c/tp-dev
cd /c/tp-dev/SDL_image-1.2.10
patch -p0 < /c/tp-dev/patches/SDL_image-1.2.10-configure.patch

Configure it with:

PKG_CONFIG= SDL_CONFIG=/usr/local/bin/sdl-config-console ./configure
At the end of the configure step you should see these lines which confirm that the DLLs will be loaded dynamically:
...
-- dynamic libtiff -> libtiff-3.dll
-- dynamic libjpeg -> libjpeg-8.dll
-- dynamic libpng -> libpng12.dll
...
Build it with:
make && make install

Test it in MSYS with:

showimage ../jpeg-8c/testimg.bmp
showimage ../jpeg-8c/testimg.jpg
showimage ../jpeg-8c/testimg.ppm
showimage ../libpng-1.2.44/pngbar.png
showimage ../libpng-1.2.44/pngnow.png
showimage ../libpng-1.2.44/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.

wget -c -O/c/tp-dev/zips/pics-3.8.0.tar.gz ftp://ftp.remotesensing.org/pub/libtiff/pics-3.8.0.tar.gz
tar xzf /c/tp-dev/zips/pics-3.8.0.tar.gz -C /c/tp-dev
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

libogg

wget -c -O/c/tp-dev/zips/libogg-1.2.2.tar.gz http://downloads.xiph.org/releases/ogg/libogg-1.2.2.tar.gz
tar xzf /c/tp-dev/zips/libogg-1.2.2.tar.gz -C /c/tp-dev
cd /c/tp-dev/libogg-1.2.2
./configure && make && make install
Test it with:
make check
...
./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 page spill expansion... 0, (0),  granule:0 1, (1),  granule:4103 2, (2),  granule:5127 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.
...

libvorbis

wget -c -O/c/tp-dev/zips/libvorbis-1.3.2.tar.gz http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.2.tar.gz
tar xzf /c/tp-dev/zips/libvorbis-1.3.2.tar.gz -C /c/tp-dev
cd /c/tp-dev/libvorbis-1.3.2
./configure && make && make install
Test using:
make check
...
./test_sharedbook.exe
Dequant test 1... OK
Dequant test 2... OK
Dequant test 3... OK
Dequant test 4... OK
Dequant test 5... OK
...
./test.exe

Testing 1 channel

    vorbis_1ch_q-0.5_44100.ogg : ok
    vorbis_1ch_q-0.5_48000.ogg : ok
    vorbis_1ch_q-0.5_32000.ogg : ok
    vorbis_1ch_q-0.5_22050.ogg : ok
    vorbis_1ch_q-0.5_16000.ogg : ok
    vorbis_1ch_q-0.5_96000.ogg : ok
    vorbis_1ch_q0.5_44100.ogg : ok
...
Testing 8 channels

    vorbis_8ch_q-0.5_44100.ogg : ok
    vorbis_8ch_q-0.5_48000.ogg : ok
    vorbis_8ch_q-0.5_32000.ogg : ok
    vorbis_8ch_q-0.5_22050.ogg : ok
    vorbis_8ch_q-0.5_16000.ogg : ok
    vorbis_8ch_q-0.5_96000.ogg : ok
...

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:

C:\>cd \tp-dev
C:\tp-dev\>svn co svn://svn.icculus.org/smpeg/trunk smpeg

A patch is required to enable building of the DLL. Back in the MSYS shell:

cd /c/tp-dev/smpeg
./autogen.sh
PKG_CONFIG= SDL_CONFIG=/usr/local/bin/sdl-config-console ./configure --disable-opengl-player --disable-gtk-player
wget -c -O/c/tp-dev/patches/smpeg-makefile-20091215.patch http://johnnypops.co.uk/tuxpaint/smpeg-makefile-20091215.patch
patch -p0 Makefile < ../patches/smpeg-makefile-20091215.patch
make && make install
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

libmikmod (optional)

If you want MOD file support (not required for Tux Paint) we'll need to extract the archive 'libmikmod-3.1.12.zip' from SDL_mixer-1.2.11, apply a patch, run configure, copy 'libtool' from the SDL-1.2.14 directory and then finally build it:
wget -c -O/c/tp-dev/zips/SDL_mixer-1.2.11.tar.gz http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.11.tar.gz
tar xzf /c/tp-dev/zips/SDL_mixer-1.2.11.tar.gz -C /c/tp-dev
unzip -d/c/tp-dev /c/tp-dev/SDL_mixer-1.2.11/libmikmod-3.1.12.zip
wget -c -O/c/tp-dev/patches/libmikmod-3.1.12.patch http://johnnypops.co.uk/tuxpaint/libmikmod-3.1.12.patch
cd /c/tp-dev/libmikmod-3.1.12.patched
patch -p0 <../patches/libmikmod-3.1.12.patch
./configure
cp ../SDL-1.2.14/libtool ./
make && make install

SDL_mixer

In order to get SDL_mixer to dynamically load 'libogg.dll', 'smpeg.dll' and 'libmikmod.dll' I have provided a patch to 'configure'.
wget -c -O/c/tp-dev/zips/SDL_mixer-1.2.11.tar.gz http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.11.tar.gz
tar xzf /c/tp-dev/zips/SDL_mixer-1.2.11.tar.gz -C /c/tp-dev
wget -c -O/c/tp-dev/patches/SDL_mixer-1.2.11-configure.patch http://johnnypops.co.uk/tuxpaint/SDL_mixer-1.2.11-configure.patch
cd /c/tp-dev/SDL_mixer-1.2.11
patch -p0 <../patches/SDL_mixer-1.2.11-configure.patch
PKG_CONFIG= SDL_CONFIG=/usr/local/bin/sdl-config-console ./configure
make && make install
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

freetype

Includes a patch to make the freetype DLL use the zlib DLL.
wget -c -O/c/tp-dev/zips/freetype-2.4.4.tar.bz2 http://download.savannah.gnu.org/releases/freetype/freetype-2.4.4.tar.bz2
tar xjf /c/tp-dev/zips/freetype-2.4.4.tar.bz2 -C /c/tp-dev
wget -c -O/c/tp-dev/patches/freetype-2.4.4-zlib.patch http://johnnypops.co.uk/tuxpaint/freetype-2.4.4-zlib.patch
cd /c/tp-dev/freetype-2.4.4
patch -p0 <../patches/freetype-2.4.4-zlib.patch
./configure && make && make install

SDL_ttf

wget -c -O/c/tp-dev/zips/SDL_ttf-2.0.10.tar.gz http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.10.tar.gz
tar xzf /c/tp-dev/zips/SDL_ttf-2.0.10.tar.gz -C /c/tp-dev
cd /c/tp-dev/SDL_ttf-2.0.10
SDL_CONFIG=/usr/local/bin/sdl-config-console ./configure
make && make install

Test it with:

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

fltk

wget -c -O/c/tp-dev/zips/fltk-1.1.10-source.tar.bz2 http://ftp.easysw.com/pub/fltk/1.1.10/fltk-1.1.10-source.tar.bz2
tar xjf /c/tp-dev/zips/fltk-1.1.10-source.tar.bz2 -C /c/tp-dev
cd /c/tp-dev/fltk-1.1.10
./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

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).

wget -c -O/c/tp-dev/zips/fribidi-0.10.9.tar.gz http://fribidi.org/download/fribidi-0.10.9.tar.gz
tar xzf /c/tp-dev/zips/fribidi-0.10.9.tar.gz -C /c/tp-dev
wget -c -O/c/tp-dev/patches/fribidi-win32.patch http://johnnypops.co.uk/tuxpaint/fribidi-win32.patch
cd /c/tp-dev/fribidi-0.10.9
patch -p1 <../patches/fribidi-win32.patch
CFLAGS="-DFRIBIDI_EXPORTS -g -O2" ./configure
make && make install

gperf

We need this tool to help build Tux Paint. Install it like this:
wget -c -O/c/tp-dev/zips/gperf-3.0.4.tar.gz http://ftp.gnu.org/pub/gnu/gperf/gperf-3.0.4.tar.gz
tar xzf /c/tp-dev/zips/gperf-3.0.4.tar.gz -C /c/tp-dev
cd /c/tp-dev/gperf-3.0.4
./configure --prefix=/usr && make && make install
If you want to build a version of Tux Paint for win9x/ME systems then you are done building libraries and tools at this point and should skip to the Tux Paint instructions below.

xmllib2

The patch forces it to use the zlib DLL and fixes a problem in 'testThreads.c'.
wget -c -O/c/tp-dev/zips/libxml2-2.7.8.tar.gz ftp://xmlsoft.org/libxml2/libxml2-2.7.8.tar.gz
tar xzf /c/tp-dev/zips/libxml2-2.7.8.tar.gz -C /c/tp-dev
wget -c -O/c/tp-dev/patches/libxml2-2.7.8-configure-testThreads.patch http://johnnypops.co.uk/tuxpaint/libxml2-2.7.8-configure-testThreads.patch
cd /c/tp-dev/libxml2-2.7.8
patch -p0 <../patches/libxml2-2.7.8-configure-testThreads.patch
./configure && make && make install
It takes quite a while to build.

fontconfig

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.
wget -c -O/c/tp-dev/zips/fontconfig-2.8.0.tar.gz http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.8.0.tar.gz
tar xzf /c/tp-dev/zips/fontconfig-2.8.0.tar.gz -C /c/tp-dev
wget -c -O/c/tp-dev/patches/fontconfig-2.8.0-jfp-20091224.diff http://johnnypops.co.uk/tuxpaint/fontconfig-2.8.0-jfp-20091224.diff
cd /c/tp-dev/fontconfig-2.8.0
patch -p0 <../patches/fontconfig-2.8.0-jfp-20091224.diff
./configure --enable-libxml2 --disable-docs
make && make install

glib

The patch ensures that glib links to the zlib DLL and improves the timer resolution on XP. The performance test was failing because the timer granularity was so poor that division-by-zero errors were occuring!
wget -c -O/c/tp-dev/zips/glib-2.26.1.tar.bz2 http://ftp.acc.umu.se/pub/GNOME/sources/glib/2.26/glib-2.26.1.tar.bz2
tar xjf /c/tp-dev/zips/glib-2.26.1.tar.bz2 -C /c/tp-dev
wget -c -O/c/tp-dev/patches/glib-2.26.1-zlib-timer.patch http://johnnypops.co.uk/tuxpaint/glib-2.26.1-zlib-timer.patch
cd /c/tp-dev/glib-2.26.1
patch -p0 <../patches/glib-2.26.1-zlib-timer.patch
./configure && make && make install
Test it by running:
make check
All tests should pass.

bzip2

The provided Makefile doesn't perform an install so I made a modified version.
wget -c -O/c/tp-dev/zips/bzip2-1.0.6.tar.gz http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar xzf /c/tp-dev/zips/bzip2-1.0.6.tar.gz -C /c/tp-dev
wget -c -O/c/tp-dev/patches/Makefile-libbz2_so-mingw http://johnnypops.co.uk/tuxpaint/Makefile-libbz2_so-mingw
cp /c/tp-dev/patches/Makefile-libbz2_so-mingw /c/tp-dev/bzip2-1.0.6/Makefile-libbz2_so-mingw
cd /c/tp-dev/bzip2-1.0.6
make -f Makefile-libbz2_so-mingw && make -f Makefile-libbz2_so-mingw install

cairo

wget -c -O/c/tp-dev/zips/pixman-0.20.2.tar.gz http://cairographics.org/releases/pixman-0.20.2.tar.gz
tar xzf /c/tp-dev/zips/pixman-0.20.2.tar.gz -C /c/tp-dev
cd /c/tp-dev/pixman-0.20.2
./configure && make && make install
Test it with:
make check
All the tests should pass. The 'blitters-test', 'scaling-test' and 'affine-test' tests takes some time.
wget -c -O/c/tp-dev/zips/cairo-1.10.2.tar.gz http://cairographics.org/releases/cairo-1.10.2.tar.gz
tar xzf /c/tp-dev/zips/cairo-1.10.2.tar.gz -C /c/tp-dev
wget -c -O/c/tp-dev/patches/cairo-1.10.2-zlib.patch http://johnnypops.co.uk/tuxpaint/cairo-1.10.2-zlib.patch
cd /c/tp-dev/cairo-1.10.2
patch -p0 <../patches/cairo-1.10.2-zlib.patch
./configure && make && make install

pango

wget -c -O/c/tp-dev/zips/pango-1.28.3.tar.gz http://ftp.gnome.org/pub/GNOME/sources/pango/1.28/pango-1.28.3.tar.gz
tar xzf /c/tp-dev/zips/pango-1.28.3.tar.gz -C /c/tp-dev
cd /c/tp-dev/pango-1.28.3
./configure && make && make install
Test it by running:
make check

libcroco

wget -c -O/c/tp-dev/zips/libcroco-0.6.2.tar.gz http://ftp.acc.umu.se/pub/GNOME/sources/libcroco/0.6/libcroco-0.6.2.tar.gz
tar xzf /c/tp-dev/zips/libcroco-0.6.2.tar.gz -C /c/tp-dev
cd /c/tp-dev/libcroco-0.6.2
./configure && make && make install

intltool

wget -c -O/c/tp-dev/zips/intltool-0.35.5.tar.bz2 http://ftp.gnome.org/pub/gnome/sources/intltool/0.35/intltool-0.35.5.tar.bz2
tar xjf /c/tp-dev/zips/intltool-0.35.5.tar.bz2 -C /c/tp-dev
cd /c/tp-dev/intltool-0.35.5
./configure && make && make install

gdk-pixbuf

wget -c -O/c/tp-dev/zips/gdk-pixbuf-2.22.1.tar.bz2 http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.22/gdk-pixbuf-2.22.1.tar.bz2
tar xjf /c/tp-dev/zips/gdk-pixbuf-2.22.1.tar.bz2 -C /c/tp-dev
cd /c/tp-dev/gdk-pixbuf-2.22.1
./configure && make && make install

libgsf

wget -c -O/c/tp-dev/zips/libgsf-1.14.21.tar.bz2 http://ftp.acc.umu.se/pub/GNOME/sources/libgsf/1.14/libgsf-1.14.21.tar.bz2
tar xjf /c/tp-dev/zips/libgsf-1.14.21.tar.bz2 -C /c/tp-dev
wget -c -O/c/tp-dev/patches/libgsf-1.14.21-zlib.patch http://johnnypops.co.uk/tuxpaint/libgsf-1.14.21-zlib.patch
cd /c/tp-dev/libgsf-1.14.21
patch -p0 <../patches/libgsf-1.14.21-zlib.patch
./configure --without-python && make && make install

librsvg

wget -c -O/c/tp-dev/zips/librsvg-2.26.3.tar.bz2 http://ftp.acc.umu.se/pub/GNOME/sources/librsvg/2.26/librsvg-2.26.3.tar.bz2
tar xjf /c/tp-dev/zips/librsvg-2.26.3.tar.bz2 -C /c/tp-dev
cd /c/tp-dev/librsvg-2.26.3
./configure && make && make install

SDL_Pango

The patch fixes the SDL version detection and builds a working libtool. It also adds some extra (required) functionality to SDL_Pango.

wget -c -O/c/tp-dev/zips/SDL_Pango-0.1.2.tar.gz http://surfnet.dl.sourceforge.net/sourceforge/sdlpango/SDL_Pango-0.1.2.tar.gz
tar xzf /c/tp-dev/zips/SDL_Pango-0.1.2.tar.gz -C /c/tp-dev
wget -c -O/c/tp-dev/patches/SDL_Pango-configure-extra-api.patch http://johnnypops.co.uk/tuxpaint/SDL_Pango-configure-extra-api.patch
cd /c/tp-dev/SDL_Pango-0.1.2
patch -p0 <../patches/SDL_Pango-configure-extra-api.patch
./configure && make && make install

Pre-built Dependencies


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

NOTE: these pre-built archives were made using gcc-4.5.2 but *should* be good for the gcc-4.5.X series.

To build Tux Paint for Win9x/ME use the following pre-built dependencies:
wget -c -O/c/tp-dev/zips/mingw-msys-prebuilt-win9x-usr-local-2011-06-26.tar.xz http://johnnypops.co.uk/tuxpaint/mingw-msys-prebuilt-win9x-usr-local-2011-06-26.tar.xz
tar xJf /c/tp-dev/zips/mingw-msys-prebuilt-win9x-usr-local-2011-06-26.tar.xz -C /c/mingw/msys/1.0/
Now skip to the Tux Paint section.

To build Tux Paint for Win2K/XP/V/7 use the following pre-built dependencies:
wget -c -O/c/tp-dev/zips/mingw-msys-prebuilt-win2KXPV7-usr-local-2011-06-26.tar.xz http://johnnypops.co.uk/tuxpaint/mingw-msys-prebuilt-win2KXPV7-usr-local-2011-06-26.tar.xz
tar xJf /c/tp-dev/zips/mingw-msys-prebuilt-win2KXPV7-usr-local-2011-06-26.tar.xz -C /c/mingw/msys/1.0/
Now skip to the Tux Paint section.

These archives were built using the following command:
cd /c/mingw/msys/1.0/
tar -cJf mingw-msys-prebuilt-XXXXX-usr-local-YYYY-MM-DD.tar.xz local bin/gperf.exe

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 an MSYS shell like this:

cd /c/tp-dev
cvs -d:pserver:anonymous@tuxpaint.cvs.sourceforge.net:/cvsroot/tuxpaint login

You might get a warning 'cvs login: warning: failed to open c:\home\.cvspass for reading: No such file or directory'. Re-running the above line should work without warnings. Just hit ENTER when it asks for the 'CVS password:'. Grab the source files by running the following:

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 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 an MSYS shell like this:

cd /c/tp-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) 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 an MSYS shell like this:

cd /c/tp-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 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 Win9x/ME version use the Win9X/ME pre-built dependancies to setup the correct environment (missing the more advanced libraries) and use the following commands:

cd tuxpaint
BDIST_WIN9X=1 make bdist-win32

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.



Additional Libraries (not required for Tux Paint)

SDL_Sound

The patch adds -no-undefined when linking the DLL, the SDL libtool helps build the DLL.

wget -c -O/c/tp-dev/zips/SDL_sound-1.0.3.tar.gz http://icculus.org/SDL_sound/downloads/SDL_sound-1.0.3.tar.gz
tar xzf /c/tp-dev/zips/SDL_sound-1.0.3.tar.gz -C /c/tp-dev
cd /c/tp-dev/SDL_sound-1.0.3
patch -p0 <../patches/sdl_sound-makefile-in.patch
SDL_CONFIG=/usr/local/bin/sdl-config-console CFLAGS="-I/usr/local/include/smpeg -D__NO_INLINE__ -DSDL_SOUND_DLL_EXPORTS" ./configure --prefix=/usr/local
cp ../SDL-1.2.14/libtool .
make && make install








Valid HTML 4.01!