This is a list of platforms which Xapian has been reported to have built
and passed "make check" on.  It will probably work on many more platforms
- lack of an entry here shouldn't be assumed to mean it won't work, just that
we've not had any reports.

The list is getting rather long these days, so to summarise, Xapian should
compile on any fairly modern Unix or Unix-like platform with a compiler
with decent ISO C++ support, except for AIX.  If you're using GCC, 2.95 is
probably the minimum required version (or 3.3 if you have an ARM processor).
The only tested compiler we've failed to build with so far is Compaq C++ (see
below for more information).

64 bit platforms are well supported (we do a lot of development work on x86-64
Linux), as are both big and little endian platforms.  Any sane Linux
distribution should work, and we regularly test build on several.

Additionally, Xapian can be built on Microsoft Windows using cygwin or mingw
GCC, or with MSVC.

We have automated builds on all the platforms we can get access to, and users
have submitted the results trying to build Xapian on various other platforms.
The one attempt to build on AIX so far has failed, and nobody's reported trying
to build on IRIX since Xapian 0.8.5.

If you try a platform not listed here (or try a newer version on a listed
platform) we'd love to hear - please at least include the OS version (e.g.
output from "uname -a"), compiler and version (e.g. output from g++ -v), and
any switches you passed to configure.  Please also run "make check" and
tell us if any tests fail.

Two notes about GCC 2.95:

* GCC 2.95 reports a lot of warnings about control reaching the end of
  non-void functions - these are bogus, and can be safely ignored.

* On many platforms, certain tests (deldoc1 notably) used to fail with
  Xapian::Error exceptions - investigation revealed that the correct exception
  was being thrown, but was leaking through the catch block somehow.  Adding
  tracing code often made the test pass!  We believe this is a GCC 2.95 bug -
  it's never been reported with GCC 3.0 or higher, nor with other compilers.
  The testsuite framework should now detect such mishandled exceptions, and
  skip the test in progress with an appropriate message.

Arch  | Platform                       |Version|Status| Notes / requirements
------+--------------------------------+-------+------+------------------------
x86   |&Linux 2.2 Debian 3.1 GCC 2.95.4| 0.9.6 |Passed|
x86   |&Linux 2.2 Debian 3.1 GCC 3.0.4 | 0.9.6 |Passed|
x86   |&Linux 2.2 Debian 3.1 GCC 3.3.5 | 0.9.6 |Passed|
x86   |=Linux 2.4 Debian 3.1 GCC 3.3.5 | 0.9.6 |Passed| (td140)
x86   |*Linux 2.6 Debian 3.1 GCC 3.3.5 | 0.9.6 |Passed| (x86-linux1)
x86   |&Linux 2.2 Debian 3.1 GCC 3.4.4 | 0.9.6 |Passed|
x86   |$Linux 2.6 Debian sid GCC 3.3.6 | 0.9.6 |Passed|
x86   |$Linux 2.6 Debian sid GCC 3.4.6 | 0.9.6 |Passed|
x86   |$Linux 2.6 Debian sid GCC 4.0.4 | 0.9.6 |Passed|
x86   |$Linux 2.6 Debian sid GCC 4.1.1 | 0.9.6 |Passed|
x86   | Linux 2.4 RedHat 7.3 GCC 2.96  | 0.8.0 |Passed| from Chris Good
x86   |#Linux 2.4 RedHat 9.0 GCC 3.2.2 | 0.8.3~|Passed|
x86   |#Linux 2.4 RHEL AS3 GCC 2.96    | 0.8.5 |Passed| (was td185)
x86   |#Linux 2.4 RHEL AS3 GCC 3.2.3   | 0.9.2 |Passed| (was cf-shell)
x86   |*Linux 2.6 CentOS 4.3 GCC 3.4.5 | 0.9.6 |Passed| (cf-shell)
x86   |#Linux 2.4 RHEL AS3 IntelC++ 8.1| 0.8.5~|Passed| (was td185)
x86   |#Linux 2.4 RHEL ES3 GCC 2.96    | 0.8.5 |Passed| (was td141)
x86   |#Linux 2.4 RHEL ES3 GCC 3.4.3   | 0.9.2 |Passed| (was td141)
x86   |#Linux 2.4 RHEL ES3 GCC pre4.0  | 0.9.2 |Passed| (was td141)
x86   |#Linux 2.4 RHEL ES3 IntelC++ 8.1| 0.9.2 |Passed| (was td141)
x86   |=Linux 2.6 RHEL AS4 GCC 3.2.3   | 0.9.6 |Passed| (td163,185)
x86   |=Linux 2.6 RHEL AS4 GCC 3.4.5   | 0.9.6 |Passed| (td163,185)
x86   |=Linux 2.6 RHEL AS4 GCC 4.0.2   | 0.9.6 |Passed| (td163,185)
x86   |=Linux 2.6 RHEL AS4 IntelC++ 8.1| 0.9.6 |Passed| (td163,185)
x86   |=Linux 2.6 RHEL AS4 IntelC++ 9.0| 0.9.6 |Passed| (td163,185)
x86   |=Linux 2.6 RHEL ES4 GCC 3.4.5   | 0.9.6 |Passed| (td141)
x86   |=Linux 2.6 RHEL ES4 GCC 4.0.2   | 0.9.6 |Passed| (td141)
x86   |=Linux 2.6 RHEL ES4 IntelC++ 8.1| 0.9.6 |Passed| (td141)
x86   |=Linux 2.6 RHEL ES4 IntelC++ 9.0| 0.9.6 |Passed| (td141)
x86   | Linux 2.4 Slackw. 9.1 GCC 3.2.3|~0.8.1 |Passed| from tweakers.net
x86   | Linux 2.6 Debian 3.0 GCC 2.95.4| 0.8.2 |Passed| from gmane.org
x86   |*Linux 2.6 RedHat FC2 GCC 3.3.3 | 0.9.6 |Passed| (x86-linux2)
x86   | Linux 2.6 RedHat FC4 GCC 4.0.0 | 0.9.1 |Passed| from Christiano Anderson
x86   |=Linux 2.6 RH 10.0 GCC 3.4.1    | 0.9.1 |Passed| (td188)
x86   |=Linux 2.6 RH 10.0 IntelC++ 8.1 | 0.9.1 |Passed| (td188)
x86   |=Linux 2.6 SuSE 9 GCC 3.3.3     | 0.9.6 |Passed| (td162)
x86   |#Linux 2.6 SuSE 9 GCC 3.4.1     |~0.9.0 |Passed| (was td186)
x86   |=Linux 2.6 SuSE 9 IntelC++ 8.1  | 0.9.3 |Passed| (td162)
x86   |=Linux 2.6 SuSE 9 IntelC++ 9.0  | 0.9.3 |Passed| (td162)
x86   |!FreeBSD 4.8 GCC 2.95.4         | 0.9.2 |Passed|
x86   |!FreeBSD 4.8 GCC 3.2.3          | 0.9.2 |Passed|
x86   |#FreeBSD 4.10 GCC 2.95.4        | 0.9.2 |Passed| (was x86-freebsd1)
x86   |*FreeBSD 4.11 GCC 2.95.4        | 0.9.2~|??????| (x86-freebsd1)
x86   |#FreeBSD 5.3 GCC 3.4.2          | 0.9.0 |Passed| (was td152)
x86   |=FreeBSD 5.4 GCC 3.4.2          | 0.9.6 |Passed| (td152)
x86   |#NetBSD 1.6.1 GCC 2.95.3        | 0.9.0 |Passed| (was x86-netbsd1)
x86   |*NetBSD 2.0.2 GCC 3.3.3         | 0.9.6 |Passed| (x86-netbsd1)
x86   |=NetBSD 3.0 GCC 3.3.3           | 0.9.6 |Passed| (td143)
x86   |#OpenBSD 3.4 GCC 2.95.3         | 0.9.0 |Passed| (was x86-openbsd1)
x86   |*OpenBSD 3.8 GCC 3.3.5          | 0.9.6 |Passed| (x86-openbsd1)
x86   |*Solaris 9 GCC 3.3.2            | 0.9.6 |Passed| (x86-solaris1)
x86   |*Solaris 9 Sun Workshop C++ 5.5 | 0.9.6 |Passed| (x86-solaris1) [2]
x86   | Cygwin 1.5.10 GCC 3.3.3 XP sp2 |~0.8.4 |Passed| [4] from Mike Boone
x86   | MSYS/MingW GCC 3.3.1           |~0.8.0 |Passed| from Hartmut Honisch
x86   | MinGW 3.1.0                    |~0.8.4 |Passed| from Michael Sisolak
x86_64|#Linux 2.4 RHEL AS3 GCC 2.96    | 0.8.5 |Passed|
x86_64|#Linux 2.4 RHEL AS3 GCC 3.2.3   | 0.8.5 |Passed|
x86_64|=Linux 2.6 RHEL AS4 GCC 3.2.3   | 0.9.6 |Passed| (td189)
x86_64|=Linux 2.6 RHEL AS4 GCC 3.4.5   | 0.9.6 |Passed| (td189)
x86_64|=Linux 2.6 RHEL AS4 GCC 4.0.2   | 0.9.6 |Passed| (td189)
x86_64|#Linux 2.4 SuSE 8.1 GCC 3.2.2   | 0.8.5 |Passed|
x86_64|=Linux 2.6 SuSE 9 GCC 3.3.3     | 0.9.6 |Passed| (td179,190)
x86_64|=Linux 2.6 SuSE 9 IntelC++ 8.1  | 0.9.3 |Passed| (td179)
x86_64| Linux 2.6 Debian 3.1 GCC 3.3.5 | 0.8.3~|Passed| from gmane.org
x86_64|*Linux 2.6 RedHat FC3 GCC 3.3.4 | 0.9.4 |Passed| (amd64-linux2)
x86_64|*Linux 2.6 RedHat FC3 GCC 3.4.2 | 0.9.4 |Passed| (amd64-linux2)
x86_64|*Linux 2.6 RedHat FC3 GCC 4.0.0 | 0.9.4 |Passed| (amd64-linux2)
x86_64| Linux 2.6 Ubuntu 5.04 GCC 3.3.5| 0.9.0 |Passed| from Olly Betts
alpha |*Linux 2.2 Debian 3.0 GCC 2.95.4| 0.9.3 |Passed| (alpha-linux1)
alpha |*Linux 2.2 Debian 3.0 GCC 3.0.4 | 0.9.6 |Passed| (alpha-linux1) [6]
alpha |=Linux 2.4 Debian 3.1 GCC 3.3.5 | 0.9.6 |Passed| (td161, was td142)
alpha |#Linux 2.4 RedHat 7.2 GCC 3.4.1 | 0.9.2 |Passed| (was td144)
alpha |#FreeBSD 5.2.1 GCC 3.3.3        | 0.8.5 |Passed| (was td149)
alpha |#FreeBSD 5.3 GCC 3.4.2          | 0.9.0 |Passed| (was td149)
alpha |#FreeBSD 5.4 GCC 3.4.2          | 0.9.2 |Passed| (was td149)
alpha |=FreeBSD 6.0 GCC 3.4.4          | 0.9.4 |Passed| (td149)
alpha |=DEC OSF 5.1 GCC 3.3            | 0.9.6 |Passed| (td171) [9]
sparc |*Solaris 9 GCC 3.3.2            | 0.9.6 |Passed| (sparc-solaris1) [2]
sparc |*Solaris 9 Sun Workshop C++ 5.5 | 0.9.6 |Passed| (sparc-solaris1) [2]
ppc   |*MacOS X 10.1.4 GCC 2.95.2      | 0.9.2 |Passed| (ppc-osx1) [7]
ppc   |*MacOS X 10.2.8 GCC 2.95.2      | 0.9.1 |Passed| (ppc-osx2)
ppc   |*MacOS X 10.2.8 GCC 3.1 20020420| 0.9.2 |Passed| (ppc-osx2)
ppc   |*MacOS X 10.2.8 GCC 3.3         | 0.9.2 |Passed| (ppc-osx2)
ppc64 |*Linux 2.6 SuSE 9 GCC 3.3.3     | 0.9.6 |Passed| (openpower-linux1)
mips  | IRIX 6.5.22 GCC 3.3            |~0.8.0 |Passed| from Jim Lynch
mips  | IRIX 6.5.24 MIPSpro 7.4        | 0.8.5~|Passed| from Jim Lynch
arm   |^Linux 2.4 Debian sid GCC 3.3.3 | 0.8.0~|Passed|
arm   |@Linux 2.4 Debian sid GCC 3.4.0 | 0.8.0~|Passed|
hppa64|=Linux 2.4 Debian 3.0 GCC 3.0.4 | 0.9.0 |Passed| (td170)
hppa  |=HP-UX 11.11 GCC 3.4.2          | 0.9.6 |Passed| (td192)
hppa  |=HP-UX 11.23 GCC 3.4.3          | 0.9.6 |Passed| (td191)
hppa  |=HP-UX 11.11 aCC B3910B A.03.67 | 0.9.6 |Passed| (td192) [8]
hppa  |=HP-UX 11.23 aCC B3910B A.03.63 | 0.9.6 |Passed| (td191) [8]
ia64  |#Linux 2.4 Debian 3.0 GCC 2.96  | 0.9.1 |Passed| (was td156)
ia64  |=Linux 2.6 Debian 3.1 GCC 3.3.5 | 0.9.5 |Passed| (td156)
ia64  |#Linux 2.4 RHEL AS3 GCC 2.96    | 0.8.5 |Passed|
ia64  |=Linux 2.6 RHEL AS4 GCC 3.2.3   | 0.9.6 |Passed| (td177,178)
ia64  |=Linux 2.6 RHEL AS4 GCC 3.4.5   | 0.9.6 |Passed| (td177,178)
ia64  |=Linux 2.6 RHEL AS4 GCC 4.0.2   | 0.9.6 |Passed| (td177)
ia64  |#Linux 2.6 RHEL AS4 IntelC++ 8.1| 0.9.3 |Passed| (was td177)
ia64  |=Linux 2.6 RHEL AS4 IntelC++ 9.0| 0.9.6 |Passed| (td177,178)
ia64  |=Linux 2.6 SuSE 9 GCC 3.3.3     | 0.9.6 |Passed| (td187)
ia64  |=Linux 2.6 SuSE 9 GCC 3.4.1     | 0.8.5~|Passed|
ia64  |#Linux 2.6 SuSE 9 IntelC++ 8.1  | 0.9.1 |Passed| (was td187)
ia64  |=Linux 2.6 SuSE 9 IntelC++ 9.0  | 0.9.6 |Passed| (td187)
ia64  |=FreeBSD 6.0 GCC 3.4.4          | 0.9.6 |Passed| (td150)
ia64  |=HP-UX 11.23 GCC 3.4.3          | 0.9.6 |Passed| (td176)
ia64  |=HP-UX 11.23 GCC 4.0.2          | 0.9.6 |Passed| (td196)
ia64  |=HP-UX 11.23 GCC 4.1.0          | 0.9.6 |Passed| (td164,176)
ia64  |=HP-UX 11.23 aCC B3910B A.06.07 | 0.9.6 |Passed| (td164,176,196)
------+--------------------------------+-------+------+------------------------
arm   |&Linux cross to arm   GCC 2.95.2| 0.9.6 |Built | [1]
x86   |#Linux cross to mingw GCC 2.95.3| 0.9.5 |Built | [1] Using MSVCRT.DLL
x86   |&Linux cross to mingw GCC 3.4.2 | 0.9.6 |Built | [1] Using MSVCRT.DLL
x86   |*Linux cross to mingw GCC 3.4.4 | 0.9.6 |Built | [1] Using CRTDLL.DLL
x86   |$Linux cross to mingw GCC 3.4.5 | 0.9.6 |Built | [1] Using MSVCRT.DLL
x86   |*Linux cross to CYGWIN GCC 3.4.4| 0.9.6 |Built | [1]
x86   | Linux cross to DJGPP GCC 2.95.2| 0.8.0 |Built | [1] [3]
x86   |*Linux cross to DJGPP GCC 3.4.3 | 0.9.4 |Built | [1] [3]
x86   |*Linux cross to DJGPP GCC 4.0.1 | 0.9.6 |Built | [1] [3]
------+--------------------------------+-------+------+------------------------
arm   |@Linux 2.4 Debian sid GCC 2.95.4| 0.8.0 |Failed| [5]
ppc   | AIX 5.2 GCC 3.3.2              | 0.9.5 |Failed| [10] from J.F. Dockes
------+--------------------------------+-------+------+------------------------

Attempts to build Xapian with Compaq's C++ compiler (on Tru64, HPUX, and
Linux) have so far failed.  Older versions of the compiler simply seem
to lack sufficient support for C++ templates.  This minimal testcase fails to
compile:

  #include <xapian/base.h>

  class Query {
    class Internal;
    Xapian::Internal::RefCntPtr<Internal> internal;
    template <class SubQ> Query(SubQ q) : internal(0) { } 
  };

This problem is fixed in Compaq C++ 7.1 (or perhaps earlier), but the build
now fails to link a binary.  Further investigation is required.

These are older success reports lacking an update for a more recent Xapian
version (typically because the machine in question was upgraded, or we no
longer have access to it, or the report was from a third party).  We've
removed reports prior to 0.7.0 since that's when the Xapian namespace was
added and some major internal changes were made, so reports for versions prior
to this are of questionable value.

Arch  | Platform                       |Version|Status| Notes / requirements
------+--------------------------------+-------+------+------------------------
x86   | Linux 2.4 RedHat 8.0 GCC 2.96  | 0.7.3 |Passed| from Chris Good
sparc |#Linux 2.4 Debian 3.0 GCC 2.95.4| 0.7.3 |Passed| [2]
sparc |#Linux 2.4 Debian 3.0 GCC 3.0.4 | 0.7.3 |Passed| [2]
sparc |#Solaris 8 GCC 2.95.3           | 0.7.3 |Passed| [2]
------+--------------------------------+-------+------+------------------------

* = SourceForge CompileFarm machine
= = HP Test Drive machine (http://www.testdrive.hp.com/)
# = SF CompileFarm or HP Test Drive machine which is no longer available
@ = handhelds.org (telnet/ssh ipaq[1-7].handhelds.org / user guest / no passwd)
! = thanks to Gavin Kelman for access to these platforms
& = "ixion" (James Aylett's colo box)
^ = thanks to Wookey for access to this platform
$ = "roadkill" (Olly's x86 box)

~ = Tested version from CVS shortly before this release (or after for ~ suffix)

[1] "make check" won't work for a cross-compiled build!

[2] Must be compiled as a static library (./configure --disable-shared).

[3] Perhaps not a terribly useful platform for Xapian, but an additional test
of portability.  Remote backend is automatically disabled due to lack of
socketpair, and flint backend is automatically disabled due to lack of a
locking strategy implementation.  Not tried to actually run the binaries yet...

[4] Fails to build if there are spaces in the full path to the directory.

[5] internaltest fails on exception1 (SEGV) and apitest fails on queryvalid1
(SEGV).  This appears to be due to buggy handling of nested exceptions on arm
- you should use GCC 3.3 or newer.

[6] GCC 3.0.4 appears buggy on alpha - you get SEGVs unless you configure with:
./configure CXXFLAGS=-O0

[7] Lots of harmless link warnings such as:
/usr/bin/ld: warning unused multiple definitions of symbol _optarg
"link editor" definition of _optarg in section (__DATA,__common)
/usr/lib/libSystem.dylib(getopt.o) unused definition of _optarg

[8] Must be compiled with -AA (which configure automatically passes), which
means your code must also be compiled with -AA.  Compiling with -AP (non
ANSI mode) would require changes to Xapian, and is only required if you
need to link to Xapian and another library not available in -AA form.  HP
recommend ISVs to supply libraries in -AA form, so this isn't a likely
scenario.  Where required, "xapian-config --cxxflags" will include "-AA".

[9] Generates 18000+ (!) warnings like "ar: Warning: ignoring second
definition of <mangled C++ symbol name> defined in archive", but passes
testsuite.

[10] Large File Support does not work (cstdio does not compile), which appears
to be a known problem with the GNU STL on AIX, so you have to configure
xapian-core with --disable-largefile.  Xapian-core builds, but btreetest,
quartztest, apitest, and queryparsertest all dump core.
