Trac is being migrated to new services! Issues can be found in our new YouTrack instance and WIKI pages can be found on our website.

Version 3 (modified by MarkDoliner, 11 years ago) (diff)

s/hxxp/http/

Pidgin for Windows Build Instructions

Note: These instructions are for 3.0.0 branch. The current instructions for 2.x.y are found here.

Set up your build environment

  1. Install the Cygwin Bash shell. Make sure to select Unix file mode during setup. Also make sure you install bash, bzip2, ca-certificates, coreutils, gawk, gnupg, grep, gzip, libiconv, make, mercurial, patch, sed, tar, unzip, wget, and zip (several of these are selected by default, those in bold are not). Be sure to add Cygwin versions of any programs you may use that require Cygwin path names (for example, if you want to use vim to edit monotone commit messages, you need to install the Cygwin version of vim -- native Win32 vim will be unable to read Cygwin-style paths).
    You may prefer to use MSYS instead of Cygwin.
  1. Download the Bonjour SDK for Windows from the Apple developer website (Apple ID may be necessary) and install it to default location.
  1. Download Perl 5.10 or newer and install it, preferably to C:\Perl. You may use ActivePerl Community Edition.
  1. Extract or check out the Pidgin source into $PIDGIN_DEV_ROOT/pidgin-<version>. Some users may find the instructions for customizing their build environment useful.

You don't have to actually define an environment variable called PIDGIN_DEV_ROOT, it is simply used here as a placeholder.

Note: You should avoid using a $PIDGIN_DEV_ROOT path that contains spaces as that can cause unnecessary complications.

People are sometimes confused about the directory structure, so here is an example structure after all the dependencies have been installed ($PIDGIN_DEV_ROOT is c:\devel\pidgin-devel in this example):

c:\devel\pidgin-devel
(The following is the source tree root, containing config.h.mingw.)
c:\devel\pidgin-devel\pidgin-<version>
(If the following file is present, your structure is probably correct.)
c:\devel\pidgin-devel\pidgin-<version>\pidgin\win32\prepare-workspace.sh
  1. Go through the rest of setting build environment using automatic setup script by running the following from Cygwin terminal:
    cd $PIDGIN_DEV_ROOT/pidgin-<version>/pidgin/win32
    ./prepare-workspace.sh
    

Get the Pidgin source code

The 3.0.0 branch isn't released yet, so there are no source packages for this at the moment.

The development source is available via mercurial. See UsingPidginMercurial for more information.

Build Pidgin

Run the following:

cd $PIDGIN_DEV_ROOT/pidgin-<version>
make -f Makefile.mingw install

Now just wait and let your compiler do its thing. When finished, Pidgin will be in $PIDGIN_DEV_ROOT/pidgin-<version>/win32-install-dir.

Build the Pidgin Installer

TODO

Customizing the Build Environment

Most people will find that the standard build environment directory is completely adequate. It is, however, possible to override the locations of the various dependencies and target directories. This is often useful to test against a development version of a library dependency or to override compiler flags.

This done is by overriding the various Makefile variables in a local.mak file in the $PIDGIN_DEV_ROOT/pidgin-<version> directory. This file does not exist by default.

Most of the variables that can be overridden with this method are defined in the libpurple/win32/global.mak file. For example, to install Pidgin over c:\Program Files\Pidgin instead of $PIDGIN_DEV_ROOT/pidgin/win32-install-dir, create a $PIDGIN_DEV_ROOT/pidgin/local.mak containing:

 #Override the install location
 PIDGIN_INSTALL_DIR = /cygdrive/c/Program\ Files/Pidgin
 PURPLE_INSTALL_DIR = /cygdrive/c/Program\ Files/Pidgin

One nice use of the local.mak file is for cross compiling.

Debugging

There is a quite good Just In Time debugger for MinGW: drmingw.
There is also a version of gdb available from MinGW, if you prefer.

All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!