blob: a9120988b7c753e72c101f0ea15bdfd6168c9910 [file] [log] [blame]
/*------------------------------------------------------------------------------
* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
*
* Distributable under the terms of either the Apache License (Version 2.0) or
* the GNU Lesser General Public License, as specified in the COPYING file.
*
* Changes are Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
------------------------------------------------------------------------------*/
#if !defined(_lucene_COMPILER_GCC)
#define _lucene_COMPILER_GCC
// It is internal CLucene header - DO NOT include it directly
#if !defined(_SUPPRESS_MAKE_BASED_CONFIG)
#if defined(_BUILD_FOR_QT_)
#include "fulltextsearch/qclucene-config_p.h"
#else
#include "CLucene/clucene-config.h" //make clucene-config.h file
#endif
#endif
#if defined(_ASCII)
#undef _UCS2
#elif defined(_UCS2)
//
#else
#define CL_CHARSET_GUESS
#endif
//dont allow FS_MMAP if mmap is not available
#if defined(LUCENE_FS_MMAP) && !defined(_CL_HAVE_MMAP)
#error "LUCENE_FS_MMAP is defined and MMap doesn't appear to be available"
#endif
#ifdef _CL_HAVE_NO_FUNCTION_TRY_BLOCKS
#undef _LUCENE_DISABLE_EXCEPTIONS
#define _LUCENE_DISABLE_EXCEPTIONS
#error "this is bad if you made it here... your compiler seems not to have try/catch blocks."
#error "maybe you could implement an alternative solution for us? :)"
#endif
#ifndef _CL_HAVE_NAMESPACES
#define DISABLE_NAMESPACE
#endif
#define CL_NS_HASHING(func) __gnu_cxx::func
#define LUCENE_DISABLE_HASHING //we could enable this, but so far test show that the hashing is slower :(
//define the file functions
#define fileSeek lseek
#define fileSize _filelength
#define fileStat stat
#define fileHandleStat fstat
#ifdef _CL_HAVE_TELL
#define fileTell tell
#else
//ftell (and probably soon ftell64) are POSIX standard functions, but tell and
//tell64 are not, so we define fileTell in terms of fileSeek.
#define fileTell(fhandle) fileSeek(fhandle, 0, SEEK_CUR)
#endif
//this is needed early on so that CL_MAX_PATH can be correctly determined
//in the StdHeader.h. This was earlier causing problems with macosx.
//:: crash was due to realpath() that expects an output arguments that
//has at least the size of PATH_MAX (even if the result has a lower size)
#include <limits.h>
#ifndef _CL_HAVE_WCHAR_T
typedef unsigned short wchar_t;
#endif
#if defined(__CYGWIN__)
//cygwin seems to incorrectly define that it has wprintf???
#undef _CL_HAVE_WPRINTF
#elif defined(__MINGW32__)
#ifndef _CL_HAVE_WINDOWS_H
#define _CL_HAVE_WINDOWS_H
#endif
#endif
///////////////////////////////////////////////////////////////////////////////
//end _lucene_COMPILER_GCC1
#elif !defined(_lucene_COMPILER_GCC2)
#define _lucene_COMPILER_GCC2
//second inclusion
//types
#if defined(_CL_HAVE_SYS_TYPES_H)
#include <sys/types.h>
#endif
#if defined(_CL_HAVE_INTTYPES_H)
#include <inttypes.h>
#elif defined(_CL_HAVE_STDINT_H)
#include <stdint.h>
#else
#if _CL_SIZEOF_UNSIGNED_LONG_LONG==8
typedef unsigned long long uint64_t;
typedef long long int64_t;
#elif _CL_SIZEOF_UNSIGNED_LONG==8
typedef unsigned long uint64_t;
typedef long int64_t;
#else
#error I do not know what to use for a uint64_t.
#endif
/* Give us an unsigned 32-bit data type. */
#if _CL_SIZEOF_UNSIGNED_LONG==4
typedef unsigned long uint32_t;
typedef long int32_t;
#elif _CL_SIZEOF_UNSIGNED_INT==4
typedef unsigned int uint32_t;
typedef int int32_t;
#else
#error I do not know what to use for a uint32_t.
#endif
/* An unsigned 8-bit data type */
#if _CL_SIZEOF_UNSIGNED_CHAR==1
typedef unsigned char uint8_t;
#else
#error I do not know what to use for a uint8_t.
#endif
#endif
//second chance to fix default settings
//this must be defined later, otherwise it messes up
//the standard libraries
#if !defined(__MINGW32__)
#define _close ::close
#define _read ::read
#endif
//now that int64_t is defined, we can define this...
#ifndef _CL_HAVE_FILELENGTH
#undef fileSize
#define fileSize lucene_filelength
int64_t lucene_filelength(int handle);
#endif
#elif !defined(_lucene_COMPILER_GCC3)
#define _lucene_COMPILER_GCC3
//third inclusion
#if !defined(__MINGW32__)
//define replacements
#define O_RANDOM 0
#undef O_BINARY
#define O_BINARY 0
#define _S_IREAD 0444
#define _S_IWRITE 0333 // write and execute permissions
//some functions that are needed - not charset dependent and not tchar type functions
#define _open open
#define _write write
#define _snprintf snprintf
//clucene uses ascii for filename interactions
#define _realpath(rel,abs) realpath(rel,abs)
#define _mkdir(x) mkdir(x,0777)
#define _unlink unlink
#else
#define _realpath(rel,abs) _fullpath(abs,rel,CL_MAX_PATH)
#endif
//also required by mingw
#define _rename rename
#endif
#if defined(__GNUC__) && (defined(__sgi) || (defined(Q_OS_SOLARIS) && Q_SOLARIS_VERSION < 10))
#undef _CL_HAVE_FLOAT_T
#endif
#if defined(__GNUC__) && defined(Q_OS_SOLARIS) && Q_SOLARIS_VERSION < 10
#undef _CL_HAVE_WCSTOLL
#endif