| /*------------------------------------------------------------------------------ |
| * 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 |