Kaydet (Commit) 8a55c4af authored tarafından Jung-uk Kim's avatar Jung-uk Kim Kaydeden (comit) Stephan Bergmann

fdo#53855: Use the newly added HAVE_GCC_BUILTIN_ATOMIC for clucene

Signed-off-by: Stephan Bergmann <sbergman@redhat.com>:
* added clucene-config-MINGW-atomic.h, to not lose _CL_HAVE_GCC_ATOMIC_FUNCTIONS
  when applicable there
* renamed clucene-config-GCC.h to clucene-config-GCC-atomic.h for consistency
  with above

Change-Id: I3dd15721b568fa9358b79ec28bad39249200c773
üst 8474c6af
......@@ -26,7 +26,6 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,clucene,0))
# http://sourceforge.net/mailarchive/message.php?msg_id=29143260
$(eval $(call gb_UnpackedTarball_add_patches,clucene,\
clucene/patches/clucene-debug.patch \
clucene/patches/clucene-gcc-atomics.patch \
clucene/patches/clucene-internal-zlib.patch \
clucene/patches/clucene-multimap-put.patch \
clucene/patches/clucene-narrowing-conversions.patch \
......@@ -39,10 +38,18 @@ $(eval $(call gb_UnpackedTarball_add_file,clucene,src/shared/CLucene/_clucene-co
ifeq ($(COM),MSC)
$(eval $(call gb_UnpackedTarball_add_file,clucene,src/shared/CLucene/clucene-config.h,clucene/configs/clucene-config-MSVC.h))
else
ifeq ($(HAVE_GCC_BUILTIN_ATOMIC),TRUE)
$(eval $(call gb_UnpackedTarball_add_file,clucene,src/shared/CLucene/clucene-config.h,clucene/configs/clucene-config-MINGW-atomic.h))
else
$(eval $(call gb_UnpackedTarball_add_file,clucene,src/shared/CLucene/clucene-config.h,clucene/configs/clucene-config-MINGW.h))
endif
endif
else # ! $(OS),WNT
ifeq ($(HAVE_GCC_BUILTIN_ATOMIC),TRUE)
$(eval $(call gb_UnpackedTarball_add_file,clucene,src/shared/CLucene/clucene-config.h,clucene/configs/clucene-config-GCC-atomic.h))
else
$(eval $(call gb_UnpackedTarball_add_file,clucene,src/shared/CLucene/clucene-config.h,clucene/configs/clucene-config-generic.h))
endif
ifeq ($(OS),LINUX)
$(eval $(call gb_UnpackedTarball_add_file,clucene,src/shared/CLucene/_clucene-config.h,clucene/configs/_clucene-config-LINUX.h))
else
......
#ifndef _SRC_CLUCENE_CLUCENE_CONFIG_H
#define _SRC_CLUCENE_CLUCENE_CONFIG_H 1
/* src/shared/CLucene/clucene-config.h.
* Generated automatically at end of cmake.
*/
/* CMake will look for these headers: */
#define _CL_HAVE_STRING_H 1
#define _CL_HAVE_MEMORY_H 1
#define _CL_HAVE_UNISTD_H 1
/* #undef _CL_HAVE_IO_H */
/* #undef _CL_HAVE_DIRECT_H */
#define _CL_HAVE_DIRENT_H 1
#define _CL_HAVE_SYS_DIR_H
/* #undef _CL_HAVE_SYS_NDIR_H */
#define _CL_HAVE_ERRNO_H 1
#define _CL_HAVE_WCHAR_H 1
#define _CL_HAVE_WCTYPE_H
#define _CL_HAVE_CTYPE_H 1
/* #undef _CL_HAVE_WINDOWS_H */
/* #undef _CL_HAVE_WINDEF_H */
#define _CL_HAVE_SYS_TYPES_H 1
/* #undef _CL_HAVE_DLFCN_H */
#define _CL_HAVE_EXT_HASH_MAP 1
/* #undef _CL_HAVE_EXT_HASH_SET */
#define _CL_HAVE_TR1_UNORDERED_MAP 1
#define _CL_HAVE_TR1_UNORDERED_SET 1
#define _CL_HAVE_HASH_MAP
#define _CL_HAVE_HASH_SET
/* #undef _CL_HAVE_NDIR_H */
#define _CL_HAVE_SYS_STAT_H 1
#define _CL_HAVE_SYS_TIMEB_H 1
#define _CL_HAVE_SYS_TIME_H 1
/* #undef _CL_HAVE_TCHAR_H */
#define _CL_HAVE_SYS_MMAN_H 1
/* #undef _CL_HAVE_WINERROR_H */
#define _CL_HAVE_STDINT_H 1
// our needed types
/* undef int8_t int8_t */
/* undef uint8_t uint8_t */
/* undef int16_t int16_t */
/* undef uint16_t uint16_t */
/* undef int32_t int32_t */
/* undef uint32_t uint32_t */
/* undef int64_t int64_t */
/* undef uint64_t uint64_t */
/* undef float_t*/
/* undef size_t size_t */
/* tchar & _T definitions... */
typedef wchar_t TCHAR;
#define _T(x) L ## x
/* CMake will determine these specifics. Things like bugs, etc */
/* if we can't support the map/set hashing */
/* #undef LUCENE_DISABLE_HASHING */
/* Define if you have POSIX threads libraries and header files. */
#define _CL_HAVE_PTHREAD 1
/* Define if you have Win32 threads libraries and header files. */
/* #undef _CL_HAVE_WIN32_THREADS */
/* Define if we have gcc atomic functions */
#define _CL_HAVE_GCC_ATOMIC_FUNCTIONS 1
/* Define what eval method is required for float_t to be defined (for GCC). */
/* #undef _FLT_EVAL_METHOD */
/* If we use hashmaps, which namespace do we use: */
#define CL_NS_HASHING(func) std::tr1::func
/* If we use hashmaps, which classes do we use: */
#define _CL_HASH_MAP unordered_map
#define _CL_HASH_SET unordered_set
/* define if the compiler implements namespaces */
#define _CL_HAVE_NAMESPACES
/* Defined if the snprintf overflow test fails */
/* #undef _CL_HAVE_SNPRINTF_BUG */
/* Defined if the swprintf test fails */
/* #undef _CL_HAVE_SNWPRINTF_BUG */
/* How to define a static const in a class */
#define LUCENE_STATIC_CONSTANT(type, assignment) static const type assignment
/* Define to the necessary symbol if this constant uses a non-standard name on
your system. */
//todo: not checked
/* #undef _CL_PTHREAD_CREATE_JOINABLE */
/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
//todo: not being checked for...
/* #undef _CL_STAT_MACROS_BROKEN */
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
//not actually used for anything...
//#define _CL_TIME_WITH_SYS_TIME 1
/* Define that we will be using -fvisibility=hidden, and
* make public classes visible using __attribute__ ((visibility("default")))
*/
#define _CL_HAVE_GCCVISIBILITYPATCH 1
/* Versions, etc */
/* Name of package */
#define _CL_PACKAGE "clucene-core"
/* Version number of package */
#define _CL_VERSION "2.3.3.4"
/* So-Version number of package */
#define _CL_SOVERSION "1"
/* A comparable version number */
#define _CL_INT_VERSION 2030304
/* Configured options (from command line) */
/* Forces into Ascii mode */
/* #undef _ASCII */
/* Conditional Debugging */
/* #undef _CL__CND_DEBUG */
/* debuging option */
/* #undef _DEBUG */
/* Disable multithreading */
/* #undef _CL_DISABLE_MULTITHREADING */
#ifdef __BORLANDC__ //borland compiler
//todo: bcc incorrectly detects this... fix this in cmake
#undef LUCENE_STATIC_CONSTANT
#define LUCENE_STATIC_CONSTANT(type, assignment) enum { assignment }
#endif
#endif
#ifndef _SRC_CLUCENE_CLUCENE_CONFIG_H
#define _SRC_CLUCENE_CLUCENE_CONFIG_H 1
/* src/shared/CLucene/clucene-config.h.
* Generated automatically at end of cmake.
*/
/* CMake will look for these headers: */
#define _CL_HAVE_STRING_H 1
#define _CL_HAVE_MEMORY_H 1
/* #undef _CL_HAVE_UNISTD_H */
#define _CL_HAVE_IO_H 1
#define _CL_HAVE_DIRECT_H 1
/* #undef _CL_HAVE_DIRENT_H */
/* #undef _CL_HAVE_SYS_DIR_H */
/* #undef _CL_HAVE_SYS_NDIR_H */
#define _CL_HAVE_ERRNO_H 1
#define _CL_HAVE_WCHAR_H 1
#define _CL_HAVE_WCTYPE_H
#define _CL_HAVE_CTYPE_H 1
#define _CL_HAVE_WINDOWS_H 1
/* #undef _CL_HAVE_WINDEF_H */
#define _CL_HAVE_SYS_TYPES_H 1
/* #undef _CL_HAVE_DLFCN_H */
/* #undef _CL_HAVE_EXT_HASH_MAP */
/* #undef _CL_HAVE_EXT_HASH_SET */
/* #undef _CL_HAVE_TR1_UNORDERED_MAP */
/* #undef _CL_HAVE_TR1_UNORDERED_SET */
/* #undef _CL_HAVE_HASH_MAP */
/* #undef _CL_HAVE_HASH_SET */
/* #undef _CL_HAVE_NDIR_H */
#define _CL_HAVE_SYS_STAT_H 1
#define _CL_HAVE_SYS_TIMEB_H 1
/* #undef _CL_HAVE_SYS_TIME_H */
#define _CL_HAVE_TCHAR_H 1
/* #undef _CL_HAVE_SYS_MMAN_H */
#define _CL_HAVE_WINERROR_H 1
/* #undef _CL_HAVE_STDINT_H */
// our needed types
typedef signed char int8_t;
typedef unsigned char uint8_t;
typedef signed short int16_t;
typedef unsigned short uint16_t;
typedef signed int int32_t;
typedef unsigned int uint32_t;
typedef signed long long int64_t;
typedef unsigned long long uint64_t;
/* undef float_t*/
typedef unsigned long _cl_dword_t;
/* undef size_t size_t */
/* tchar & _T definitions... */
/* undef TCHAR TCHAR */
/* #undef _T */
/* CMake will determine these specifics. Things like bugs, etc */
/* if we can't support the map/set hashing */
/* #undef LUCENE_DISABLE_HASHING */
/* Define if you have POSIX threads libraries and header files. */
/* #undef _CL_HAVE_PTHREAD */
/* Define if you have Win32 threads libraries and header files. */
#define _CL_HAVE_WIN32_THREADS 1
/* Define if we have gcc atomic functions */
#define _CL_HAVE_GCC_ATOMIC_FUNCTIONS 1
/* Define what eval method is required for float_t to be defined (for GCC). */
/* #undef _FLT_EVAL_METHOD */
/* If we use hashmaps, which namespace do we use: */
#define CL_NS_HASHING(func)
/* If we use hashmaps, which classes do we use: */
#define _CL_HASH_MAP
#define _CL_HASH_SET
/* define if the compiler implements namespaces */
#define _CL_HAVE_NAMESPACES
/* Defined if the snprintf overflow test fails */
/* #undef _CL_HAVE_SNPRINTF_BUG */
/* Defined if the swprintf test fails */
/* #undef _CL_HAVE_SNWPRINTF_BUG */
/* How to define a static const in a class */
#define LUCENE_STATIC_CONSTANT(type, assignment) static const type assignment
/* Define to the necessary symbol if this constant uses a non-standard name on
your system. */
//todo: not checked
/* #undef _CL_PTHREAD_CREATE_JOINABLE */
/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
//todo: not being checked for...
/* #undef _CL_STAT_MACROS_BROKEN */
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
//not actually used for anything...
/* #undef _CL_TIME_WITH_SYS_TIME */
/* Define that we will be using -fvisibility=hidden, and
* make public classes visible using __attribute__ ((visibility("default")))
*/
/* #undef _CL_HAVE_GCCVISIBILITYPATCH */
/* Versions, etc */
/* Name of package */
#define _CL_PACKAGE "clucene-core"
/* Version number of package */
#define _CL_VERSION "2.3.3.4"
/* So-Version number of package */
#define _CL_SOVERSION "1"
/* A comparable version number */
#define _CL_INT_VERSION 2030304
/* Configured options (from command line) */
/* Forces into Ascii mode */
/* #undef _ASCII */
/* Conditional Debugging */
/* #undef _CL__CND_DEBUG */
/* debuging option */
/* #undef _DEBUG */
/* Disable multithreading */
/* #undef _CL_DISABLE_MULTITHREADING */
#ifdef __BORLANDC__ //borland compiler
//todo: bcc incorrectly detects this... fix this in cmake
#undef LUCENE_STATIC_CONSTANT
#define LUCENE_STATIC_CONSTANT(type, assignment) enum { assignment }
#endif
#endif
......@@ -67,7 +67,7 @@ typedef wchar_t TCHAR;
/* #undef _CL_HAVE_WIN32_THREADS */
/* Define if we have gcc atomic functions */
#define _CL_HAVE_GCC_ATOMIC_FUNCTIONS 1
/* #undef _CL_HAVE_GCC_ATOMIC_FUNCTIONS */
/* Define what eval method is required for float_t to be defined (for GCC). */
/* #undef _FLT_EVAL_METHOD */
......
--- src/shared/CLucene/config/threads.cpp 2012-02-23 12:06:55.355506304 +0000
+++ src/shared/CLucene/config/threads.cpp 2012-02-23 12:07:17.131766381 +0000
@@ -185,7 +185,7 @@
}
int32_t atomic_threads::atomic_increment(_LUCENE_ATOMIC_INT *theInteger){
- #ifdef _CL_HAVE_GCC_ATOMIC_FUNCTIONS
+ #if ( __GNUC__ > 4 ) || (( __GNUC__ == 4) && ( __GNUC_MINOR__ >= 4 ))
return __sync_add_and_fetch(theInteger, 1);
#else
SCOPED_LOCK_MUTEX(theInteger->THIS_LOCK)
@@ -193,7 +193,7 @@
#endif
}
int32_t atomic_threads::atomic_decrement(_LUCENE_ATOMIC_INT *theInteger){
- #ifdef _CL_HAVE_GCC_ATOMIC_FUNCTIONS
+ #if ( __GNUC__ > 4 ) || (( __GNUC__ == 4) && ( __GNUC_MINOR__ >= 4 ))
return __sync_sub_and_fetch(theInteger, 1);
#else
SCOPED_LOCK_MUTEX(theInteger->THIS_LOCK)
--- src/shared/CLucene/LuceneThreads.h 2012-02-23 12:36:28.388299322 +0000
+++ src/shared/CLucene/LuceneThreads.h 2012-02-23 12:37:23.131885433 +0000
@@ -70,7 +70,7 @@
void NotifyAll();
};
- #ifdef _CL_HAVE_GCC_ATOMIC_FUNCTIONS
+ #if ( __GNUC__ > 4 ) || (( __GNUC__ == 4) && ( __GNUC_MINOR__ >= 4 ))
#define _LUCENE_ATOMIC_INT uint32_t
#define _LUCENE_ATOMIC_INT_SET(x,v) x=v
#define _LUCENE_ATOMIC_INT_GET(x) x
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment