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. And on OS/2 with EMX GCC. 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. 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.6 Debian sid GCC 4.3.4 | 1.0.17|Passed| x86 |#Linux 2.6 RHELServer5 GCC 4.1.1| 1.0.4 |Passed| (td185) x86 |#Linux 2.6 SuSE 10 GCC 4.1.0 | 1.0.4 |Passed| (td186) x86 |#Linux 2.6 SuSE 10 IntelC++ 9.1 | 1.0.1 |Passed| (td186) x86 | Linux 2.6 Ubuntu 6.06 GCC 4.0.3| 1.0.17|Passed| from Launchpad PPA x86 | Linux 2.6 Ubuntu 8.04 GCC 4.2.4| 1.0.17|Passed| from Launchpad PPA x86 | Linux 2.6 Ubuntu 8.10 GCC 4.3.2| 1.0.17|Passed| from Launchpad PPA x86 | Linux 2.6 Ubuntu 9.04 GCC 4.3.3| 1.0.17|Passed| from Launchpad PPA x86 | Linux 2.6 Ubuntu 9.10 GCC 4.4.1| 1.0.17|Passed| from Launchpad PPA x86 |#FreeBSD 6.2 GCC 3.4.6 | 1.0.4 |Passed| (td152) x86 |:kFreeBSD 7.2 Debian GCC 4.3.4 | 1.0.17|Passed| x86 |:Hurd 0.3 Debian sid GCC 4.3.4 | 1.0.17|Passed| x86_64|&Linux 2.6 Debian 4.0 GCC 4.1.2 | 1.0.11|Passed| (atreus) x86_64|#Linux 2.6 RHEL AS4 GCC 3.2.3 | 1.0.0 |Passed| (was td189) x86_64|#Linux 2.6 RHEL AS4 GCC 3.4.6 | 1.0.1 |Passed| (td189) x86_64|#Linux 2.6 RHEL AS4 GCC 4.1.0 | 1.0.1 |Passed| (td189) x86_64|#Linux 2.6 RHELServer5 GCC 4.1.1| 1.0.4 |Passed| (td159,163,165) x86_64|#Linux 2.6 SuSE 10 GCC 4.1.0 | 1.0.4 |Passed| (td162,166,179) x86_64|%Linux 2.6 SuSE 10 GCC 4.1.2 | 1.0.5 |Passed| (iceland.sgi.com) x86_64|#Linux 2.6 SuSE 10 IntelC++ 9.1 | 1.0.4 |Passed| (td162) x86_64| Linux 2.6 Ubuntu 6.06 GCC 4.0.3| 1.0.17|Passed| from Launchpad PPA x86_64| Linux 2.6 Ubuntu 8.04 GCC 4.2.4| 1.0.17|Passed| from Launchpad PPA x86_64| Linux 2.6 Ubuntu 8.10 GCC 4.3.2| 1.0.17|Passed| from Launchpad PPA x86_64| Linux 2.6 Ubuntu 9.04 GCC 4.3.3| 1.0.17|Passed| from Launchpad PPA x86_64| Linux 2.6 Ubuntu 9.10 GCC 4.4.1| 1.0.17|Passed| from Olly Betts x86_64|:kFreeBSD 7.2 Debian GCC 4.3.4 | 1.0.17|Passed| alpha |:Linux 2.6 Debian sid GCC 4.3.4 | 1.0.17|Passed| alpha |:Linux 2.6 Debian 5.0 GCC 4.2.4 | 1.0.17|Passed| arm |:Linux 2.6 Debian sid GCC 4.1.3 | 1.0.2 |Passed| core testsuite not run armel |:Linux 2.6 Debian sid GCC 4.3.4 | 1.0.17|Passed| hppa |:Linux 2.6 Debian sid GCC 4.3.4 | 1.0.17|Passed| ia64 |:Linux 2.6 Debian sid GCC 4.3.4 | 1.0.17|Passed| ia64 |:Linux 2.6 Debian 5.0 GCC 4.3.2 | 1.0.17|Passed| ia64 |#Linux 2.6 RHELServer5 GCC 4.1.1| 1.0.4 |Passed| (td178,188) ia64 |%Linux 2.6 SuSE 10 GCC 3.3.3 | 1.0.5 |Passed| (polly.sgi.com) ia64 |#Linux 2.6 SuSE 10 GCC 4.1.0 | 1.0.4 |Passed| (td187) ia64 |%Linux 2.6 SuSE 10 GCC 4.1.2 | 1.0.5 |Passed| (penguin.sgi.com) ia64 |#FreeBSD 6.2 GCC 3.4.6 | 1.0.3 |Passed| (td150) m68k |:Linux 2.6 Debian sid GCC 4.3.3 | 1.0.12|Passed| core testsuite not run mips |:Linux 2.6 Debian sid GCC 4.3.4 | 1.0.17|Passed| mipsel|:Linux 2.6 Debian sid GCC 4.3.4 | 1.0.17|Passed| ppc |:Linux 2.6 Debian sid GCC 4.3.4 | 1.0.17|Passed| s390 |:Linux 2.6 Debian sid GCC 4.3.4 | 1.0.17|Passed| s390 |:Linux 2.6 Debian 4.0 GCC 4.1.2 | 1.0.17|Passed| sparc |:Linux 2.6 Debian sid GCC 4.3.4 | 1.0.17|Passed| sparc | Solaris 9 GCC 3.3 | 1.0.5 |Passed| from James Aylett sparc | Solaris 9 GCC 3.3 (-m64) | 1.0.5 |Passed| from James Aylett sparc | Solaris 10 GCC 3.4.3 | 1.0.5 |Passed| from James Aylett sparc | Solaris 10 GCC 3.4.3 (-m64) | 1.0.5 |Passed| from James Aylett ------+--------------------------------+-------+------+------------------------ arm |&Linux cross to arm GCC 2.95.2| 1.0.1 |Built | [1] x86 |&Linux cross to mingw GCC 3.4.5 | 1.0.5 |Built | [1] Using MSVCRT.DLL ------+--------------------------------+-------+------+------------------------ 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 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.9.0 - so much has changed since then that they're of questionable value. Arch | Platform |Version|Status| Notes / requirements ------+--------------------------------+-------+------+------------------------ x86 |#Linux 2.2 Debian 3.1 GCC 3.0.4 | 0.9.9 |Passed| x86 |#Linux 2.6 Debian 3.1 GCC 3.3.5 | 0.9.9 |Passed| (td140) x86 |*Linux 2.6 Debian 3.1 GCC 3.3.5 | 0.9.9 |Passed| (was x86-linux1) 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 RHEL AS3 GCC 3.2.3 | 0.9.2 |Passed| (was cf-shell) x86 |*Linux 2.6 CentOS 4.4 GCC 3.4.6 | 0.9.9 |Passed| (was cf-shell) 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.9 |Passed| (was td163,185) x86 |#Linux 2.6 RHEL AS4 GCC 3.4.6 | 0.9.9 |Passed| (was td163,185) x86 |#Linux 2.6 RHEL AS4 GCC 4.0.2 | 0.9.6 |Passed| (was td163,185) x86 |#Linux 2.6 RHEL AS4 IntelC++ 8.1| 0.9.7 |Passed| (was td163,185) x86 |#Linux 2.6 RHEL AS4 IntelC++ 9.0| 0.9.7 |Passed| (was td163,185) x86 |#Linux 2.6 RHEL AS4 IntelC++ 9.1| 0.9.9 |Passed| (was td163,185) x86 |#Linux 2.6 RHEL ES4 GCC 3.4.6 | 0.9.9 |Passed| (td141) x86 |#Linux 2.6 RHEL ES4 GCC 4.0.2 | 0.9.6 |Passed| (was td141) x86 |#Linux 2.6 RHEL ES4 GCC 4.1.0 | 0.9.9 |Passed| (td141) x86 |#Linux 2.6 RHEL ES4 IntelC++ 8.1| 0.9.7 |Passed| (td141) x86 |#Linux 2.6 RHEL ES4 IntelC++ 9.0| 0.9.7 |Passed| (td141) x86 |#Linux 2.6 RHEL ES4 IntelC++ 9.1| 0.9.9 |Passed| (td141) x86 |*Linux 2.6 RedHat FC2 GCC 3.3.3 | 0.9.9 |Passed| (was 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| (was td188) x86 |#Linux 2.6 RH 10.0 IntelC++ 8.1 | 0.9.1 |Passed| (was td188) x86 |#Linux 2.6 SuSE 9 GCC 3.3.3 | 0.9.6 |Passed| (was 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| (was td162) x86 |#Linux 2.6 SuSE 9 IntelC++ 9.0 | 0.9.3 |Passed| (was 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 5.4 GCC 3.4.2 | 0.9.8 |Passed| (was x86-freebsd1) 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.7 |Passed| (was 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.8 |Passed| (was x86-openbsd1) x86 |*Solaris 9 GCC 3.3.2 |~0.9.7 |Passed| (was x86-solaris1) x86 |*Solaris 9 Sun Workshop C++ 5.5 | 0.9.6 |Passed| (was x86-solaris1) [2] x86 | OpenSol. 11 Nexenta GCC 4.0.3 | 0.9.6 |Passed| from Fabrice Colin x86 | WindowsXP sp2 MSVC Toolkit 2003| 0.9.6 |Passed| from Charlie Hull [12] x86 | WindowsXP sp2 MSVC .Net 2003 | 0.9.10|Passed| from Charlie Hull [12] x86 | WindowsXP sp2 MSVC 2005 Express| 0.9.10|Passed| from Charlie Hull [12] x86_64|#Linux 2.6 RHEL AS4 GCC 4.0.2 | 0.9.6 |Passed| (was td189) x86_64|*Linux 2.6 RedHat FC3 GCC 3.3.4 | 0.9.9 |Passed| (was amd64-linux2) [14] x86_64|*Linux 2.6 RedHat FC3 GCC 3.4.2 | 0.9.9 |Passed| (was amd64-linux2) [14] x86_64|*Linux 2.6 RedHat FC3 GCC 4.0.0 | 0.9.9 |Passed| (was amd64-linux2) x86_64|#Linux 2.6 SuSE 9 GCC 3.3.3 | 0.9.6 |Passed| (was td179,190) x86_64|#Linux 2.6 SuSE 9 IntelC++ 8.1 | 0.9.3 |Passed| (was td179) 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| (was alpha-linux1) alpha |*Linux 2.2 Debian 3.0 GCC 3.0.4 | 0.9.9 |Passed| (was alpha-linux1) [6] alpha |#Linux 2.4 Debian 3.1 GCC 3.3.5 |~0.9.7 |Passed| (td161, was td142) alpha |#Linux 2.4 RedHat 7.2 GCC 3.4.1 | 0.9.2 |Passed| (was td144) 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| (was td171) [9] sparc | Linux 2.6 Debian sid GCC 4.0.4 | 0.9.6 |Passed| from Alex Deucher [11] sparc |*Solaris 9 GCC 2.95.3 | 0.9.9 |Passed| (was sparc-solaris1) [2] sparc |*Solaris 9 Sun Workshop C++ 5.5 | 0.9.9 |Passed| (was sparc-solaris1) [2] ppc |*MacOS X 10.1.4 GCC 2.95.2 | 0.9.2 |Passed| (was ppc-osx1) [7] ppc |*MacOS X 10.2.8 GCC 2.95.2 | 0.9.1 |Passed| (was ppc-osx2) ppc |*MacOS X 10.2.8 GCC 3.1 20020420| 0.9.8 |Passed| (was ppc-osx3) ppc |*MacOS X 10.2.8 GCC 3.3 | 0.9.2 |Passed| (was ppc-osx2) ppc64 |*Linux 2.6 SuSE 9 GCC 3.3.3 | 0.9.9 |Passed| (was openpower-linux1) mips |%IRIX 6.5.27 MIPSpro 7.4 | 0.9.9 |Passed| (ferrari.sgi.com) [13] hppa |#HP-UX 11.11 GCC 3.4.2 | 0.9.9 |Passed| (td192) hppa |#HP-UX 11.23 GCC 3.4.3 | 0.9.9 |Passed| (td191) hppa |#HP-UX 11.23 GCC 3.4.3 | 0.9.6 |Passed| (was td191) hppa |#HP-UX 11.11 aCC B3910B A.03.73 | 0.9.9 |Passed| (td192) [8] hppa |#HP-UX 11.23 aCC B3910B A.03.73 | 0.9.9 |Passed| (td191) [8] hppa64|#Linux 2.4 Debian 3.0 GCC 3.0.4 | 0.9.0 |Passed| (was td170) 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.9 |Passed| (td156) ia64 |#Linux 2.6 RHEL AS4 GCC 3.2.3 | 0.9.9 |Passed| (td177) ia64 |#Linux 2.6 RHEL AS4 GCC 3.4.6 | 0.9.9 |Passed| (td177) ia64 |#Linux 2.6 RHEL AS4 GCC 4.0.2 | 0.9.6 |Passed| (was td177) ia64 |#Linux 2.6 RHEL AS4 GCC 4.1.0 | 0.9.9 |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.7 |Passed| (td177) ia64 |#Linux 2.6 RHEL AS4 IntelC++ 9.1| 0.9.7 |Passed| (td177) ia64 |#Linux 2.6 SuSE 9 GCC 3.3.3 | 0.9.9 |Passed| (was penguin.sgi.com) 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| (was td187) ia64 |#HP-UX 11.23 GCC 3.4.3 | 0.9.9 |Passed| (td164,176) ia64 |#HP-UX 11.23 GCC 4.0.2 | 0.9.6 |Passed| (was td196) ia64 |#HP-UX 11.23 GCC 4.1.0 | 0.9.6 |Passed| (td176) ia64 |#HP-UX 11.23 aCC B3910B A.06.12 | 0.9.9 |Passed| (td164,176) ------+--------------------------------+-------+------+------------------------ 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.9 |Built | [1] Using MSVCRT.DLL x86 |*Linux cross to mingw GCC 3.4.4 | 0.9.9 |Built | [1] Using CRTDLL.DLL x86 |*Linux cross to Cygwin GCC 3.4.4| 0.9.9 |Built | [1] x86 |*Linux cross to DJGPP GCC 3.4.3 | 0.9.9 |Built | [1] [3] x86 |*Linux cross to DJGPP GCC 4.0.1 | 0.9.9 |Built | [1] [3] ------+--------------------------------+-------+------+------------------------ ppc | AIX 5.2 GCC 3.3.2 | 0.9.5 |Failed| from J.F. Dockes [10] ------+--------------------------------+-------+------+------------------------ * = SourceForge CompileFarm machine (no longer available) % = SGI developer machine # = HP Test Drive machine (no longer available) ! = thanks to Gavin Kelman for access to these platforms & = "ixion" and "atreus" (James Aylett's colo boxes) $ = "roadkill" (Olly's x86 box) : = Debian buildd ~ = Tested version from SVN 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] Unused footnote. [5] Unused footnote. [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 the 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. [11] Compiling matcher/andmaybepostlist.cc with -O2 causes the compiler to die with an "internal compiler error". Recompiling just this file with -O1 allows the build to complete and pass the testsuite. [12] Requires the MSVC specific makefiles written by Ulrik Petersen and Charlie Hull available from: http://www.lemurconsulting.com/Products/Xapian/Overview.shtml Only the bindings for Python and PHP have so far been built. [13] Omega has to be built with "-ptused" in CXXFLAGS (this is now set automatically for Omega). You may need to do the same when building your own applications. We don't fully understand the issues here yet, but perhaps "-ptused" should be automatically set by xapian-config. Feedback from developers on IRIX is invited. Also, IRIX make doesn't handle VPATH builds correctly - either build in the source tree or use "smake -M" (or better still, just use GNU make if you have it installed!) [14] Java bindings built with GCJ 3.3.4 or GCJ 3.4.2 die in SmokeTest.java with java.lang.NullPointerException.