summaryrefslogtreecommitdiff
path: root/src/myconf.h.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/myconf.h.in')
-rw-r--r--src/myconf.h.in555
1 files changed, 555 insertions, 0 deletions
diff --git a/src/myconf.h.in b/src/myconf.h.in
new file mode 100644
index 0000000..535ea71
--- /dev/null
+++ b/src/myconf.h.in
@@ -0,0 +1,555 @@
+/*************************************************************************************************
+ * System-dependent configurations of Tokyo Cabinet
+ * Copyright (C) 2006-2012 FAL Labs
+ * Copyright (C) 2012-2015 Softmotions Ltd <info@softmotions.com>
+ * This file is part of Tokyo Cabinet.
+ * Tokyo Cabinet is free software; you can redistribute it and/or modify it under the terms of
+ * the GNU Lesser General Public License as published by the Free Software Foundation; either
+ * version 2.1 of the License or any later version. Tokyo Cabinet is distributed in the hope
+ * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ * You should have received a copy of the GNU Lesser General Public License along with Tokyo
+ * Cabinet; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307 USA.
+ *************************************************************************************************/
+
+
+#ifndef _MYCONF_H // duplication check
+#define _MYCONF_H
+
+#if ( (defined(__clang__) && ((__clang_major__ - 0) * 100 + (__clang_minor__ - 0)) < 302) || \
+ (!defined(__clang__) && defined(__GNUC__) && ((__GNUC__ - 0) * 100 + (__GNUC_MINOR__ - 0)) < 407) || \
+ (!defined(__GNUC__) && !defined(__clang__)) )
+#error You are using an unsupported compiler! EJDB has only been tested with Clang >= 3.2 and GCC >= 4.7
+#endif
+
+#include "basedefs.h"
+
+/*************************************************************************************************
+ * system discrimination
+ *************************************************************************************************/
+
+
+#if defined(__linux__)
+
+#define _SYS_LINUX_
+#define TCSYSNAME "Linux"
+
+#elif defined(__FreeBSD__)
+
+#define _SYS_FREEBSD_
+#define TCSYSNAME "FreeBSD"
+
+#elif defined(__NetBSD__)
+
+#define _SYS_NETBSD_
+#define TCSYSNAME "NetBSD"
+
+#elif defined(__OpenBSD__)
+
+#define _SYS_OPENBSD_
+#define TCSYSNAME "OpenBSD"
+
+#elif defined(__sun__) || defined(__sun)
+
+#define _SYS_SUNOS_
+#define TCSYSNAME "SunOS"
+
+#elif defined(__hpux)
+
+#define _SYS_HPUX_
+#define TCSYSNAME "HP-UX"
+
+#elif defined(__osf)
+
+#define _SYS_TRU64_
+#define TCSYSNAME "Tru64"
+
+#elif defined(_AIX)
+
+#define _SYS_AIX_
+#define TCSYSNAME "AIX"
+
+#elif defined(__APPLE__) && defined(__MACH__)
+
+#define _SYS_MACOSX_
+#define TCSYSNAME "Mac OS X"
+
+#elif defined(_MSC_VER)
+
+#define _SYS_MSVC_
+#define TCSYSNAME "Windows (VC++)"
+
+#elif defined(_WIN32)
+
+#define _SYS_MINGW_
+#define TCSYSNAME "Windows (MinGW)"
+
+#elif defined(__CYGWIN__)
+
+#define _SYS_CYGWIN_
+#define TCSYSNAME "Windows (Cygwin)"
+
+#else
+
+#define _SYS_GENERIC_
+#define TCSYSNAME "Generic"
+
+#endif
+
+/* String containing the version information. */
+extern EJDB_EXPORT const char *tcversion;
+
+/*************************************************************************************************
+ * common settings
+ *************************************************************************************************/
+
+
+#if defined(NDEBUG)
+#define TCDODEBUG(TC_expr) \
+ do { \
+ } while(false)
+#else
+#define TCDODEBUG(TC_expr) \
+ do { \
+ TC_expr; \
+ } while(false)
+#endif
+
+#define TCSWAB16(TC_num) \
+ ( \
+ ((TC_num & 0x00ffU) << 8) | \
+ ((TC_num & 0xff00U) >> 8) \
+ )
+
+#define TCSWAB32(TC_num) \
+ ( \
+ ((TC_num & 0x000000ffUL) << 24) | \
+ ((TC_num & 0x0000ff00UL) << 8) | \
+ ((TC_num & 0x00ff0000UL) >> 8) | \
+ ((TC_num & 0xff000000UL) >> 24) \
+ )
+
+#define TCSWAB64(TC_num) \
+ ( \
+ ((TC_num & 0x00000000000000ffULL) << 56) | \
+ ((TC_num & 0x000000000000ff00ULL) << 40) | \
+ ((TC_num & 0x0000000000ff0000ULL) << 24) | \
+ ((TC_num & 0x00000000ff000000ULL) << 8) | \
+ ((TC_num & 0x000000ff00000000ULL) >> 8) | \
+ ((TC_num & 0x0000ff0000000000ULL) >> 24) | \
+ ((TC_num & 0x00ff000000000000ULL) >> 40) | \
+ ((TC_num & 0xff00000000000000ULL) >> 56) \
+ )
+
+#if defined(_MYBIGEND) || defined(_MYSWAB)
+#define TCBIGEND 1
+#define TCHTOIS(TC_num) TCSWAB16(TC_num)
+#define TCHTOIL(TC_num) TCSWAB32(TC_num)
+#define TCHTOILL(TC_num) TCSWAB64(TC_num)
+#define TCITOHS(TC_num) TCSWAB16(TC_num)
+#define TCITOHL(TC_num) TCSWAB32(TC_num)
+#define TCITOHLL(TC_num) TCSWAB64(TC_num)
+#else
+#define TCBIGEND 0
+#define TCHTOIS(TC_num) (TC_num)
+#define TCHTOIL(TC_num) (TC_num)
+#define TCHTOILL(TC_num) (TC_num)
+#define TCITOHS(TC_num) (TC_num)
+#define TCITOHL(TC_num) (TC_num)
+#define TCITOHLL(TC_num) (TC_num)
+#endif
+
+#if defined(_MYNOUBC) || defined(__hppa__)
+#define TCUBCACHE 0
+#elif defined(_SYS_LINUX_) || defined(_SYS_FREEBSD_) || defined(_SYS_NETBSD_) || \
+ defined(_SYS_MACOSX_) || defined(_SYS_SUNOS_) || defined(_WIN32)
+#define TCUBCACHE 1
+#else
+#define TCUBCACHE 0
+#endif
+
+#if defined(_MYNOZLIB)
+#define TCUSEZLIB 0
+#else
+#define TCUSEZLIB 1
+#endif
+
+#if defined(_MYBZIP)
+#define TCUSEBZIP 1
+#else
+#define TCUSEBZIP 0
+#endif
+
+#if defined(_MYEXLZMA)
+#define TCUSEEXLZMA 1
+#else
+#define TCUSEEXLZMA 0
+#endif
+
+#if defined(_MYEXLZO)
+#define TCUSEEXLZO 1
+#else
+#define TCUSEEXLZO 0
+#endif
+
+#if defined(_MYMICROYIELD)
+#define TCMICROYIELD 1
+#else
+#define TCMICROYIELD 0
+#endif
+
+#define MYMALLOC malloc
+#define MYCALLOC calloc
+#define MYREALLOC realloc
+#define MYFREE free
+
+/*************************************************************************************************
+ * general headers
+ *************************************************************************************************/
+
+
+#ifdef _WIN32
+#include <pcreposix.h>
+#include "win32/platform.h"
+#define GET_STDOUT_HANDLE() GetStdHandle(STD_OUTPUT_HANDLE)
+#define GET_STDERR_HANDLE() GetStdHandle(STD_ERROR_HANDLE)
+#define GET_STDIN_HANDLE() GetStdHandle(STD_INPUT_HANDLE)
+#define CLOSEFH(_fd) (CloseHandle(_fd))
+#else
+#if defined(__unix) || defined(__APPLE__)
+#include "nix/platform.h"
+#endif
+#include <regex.h>
+#include <glob.h>
+#include <sys/mman.h>
+#include <sys/times.h>
+#include <sys/wait.h>
+#include <sys/resource.h>
+#define GET_STDOUT_HANDLE() (1)
+#define GET_STDERR_HANDLE() (2)
+#define GET_STDIN_HANDLE() (0)
+#define CLOSEFH(_fd) (closefd(_fd))
+#define sysconf_SC_CLK_TCK sysconf(_SC_CLK_TCK)
+#endif
+
+#define CLOSEFH2(_fd) \
+ do { \
+ CLOSEFH(_fd); \
+ (_fd) = INVALID_HANDLE_VALUE; \
+ } while(0)
+
+#include <assert.h>
+#include <ctype.h>
+#include <errno.h>
+#include <float.h>
+#include <limits.h>
+#include <locale.h>
+#include <math.h>
+#include <setjmp.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <string.h>
+#include <time.h>
+
+#include <inttypes.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+#include <unistd.h>
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+
+#include <fcntl.h>
+#include <dirent.h>
+#include <pthread.h>
+
+#if defined(_POSIX_PRIORITY_SCHEDULING)
+#include <sched.h>
+#endif
+
+/*************************************************************************************************
+ * miscellaneous hacks
+ *************************************************************************************************/
+
+
+#if defined(__GNUC__)
+#define _alignof(TC_a) ((size_t)__alignof__(TC_a))
+#else
+#define _alignof(TC_a) sizeof(TC_a)
+#endif
+#define _issigned(TC_a) ((TC_a)-1 < 1 ? true : false)
+#define _maxof(TC_a) \
+ ((TC_a)(sizeof(TC_a) == sizeof(int64_t) ? _issigned(TC_a) ? INT64_MAX : UINT64_MAX : \
+ sizeof(TC_a) == sizeof(int32_t) ? _issigned(TC_a) ? INT32_MAX : UINT32_MAX : \
+ sizeof(TC_a) == sizeof(int16_t) ? _issigned(TC_a) ? INT16_MAX : UINT16_MAX : \
+ _issigned(TC_a) ? INT8_MAX : UINT8_MAX))
+
+#if defined(_SYS_FREEBSD_) || defined(_SYS_NETBSD_) || defined(_SYS_OPENBSD_)
+#define nan(TC_a) strtod("nan", NULL)
+#define nanl(TC_a) ((long double)strtod("nan", NULL))
+#endif
+
+#if ! defined(PATH_MAX)
+#if defined(MAXPATHLEN)
+#define PATH_MAX MAXPATHLEN
+#else
+#define PATH_MAX 4096
+#endif
+#endif
+#if ! defined(NAME_MAX)
+#define NAME_MAX 255
+#endif
+
+extern int _tc_dummy_cnt;
+
+int _tc_dummyfunc(void);
+
+int _tc_dummyfuncv(int a, ...);
+
+/* MAX and MIN are defined in a really funky place in Solaris. */
+#ifndef MIN
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+#endif
+
+#ifndef MAX
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+#endif
+
+/*************************************************************************************************
+ * notation of filesystems
+ *************************************************************************************************/
+
+#ifdef _WIN32
+#define MYPATHCHR '\\'
+#define MYPATHSTR "\\"
+#else
+#define MYPATHCHR '/'
+#define MYPATHSTR "/"
+#endif
+
+#define MYEXTCHR '.'
+#define MYEXTSTR "."
+#define MYCDIRSTR "."
+#define MYPDIRSTR ".."
+
+
+
+/*************************************************************************************************
+ * for ZLIB
+ *************************************************************************************************/
+
+
+enum {
+ _TCZMZLIB,
+ _TCZMRAW,
+ _TCZMGZIP
+};
+
+
+EJDB_EXPORT extern char *(*_tc_deflate)(const char *, int, int *, int);
+
+EJDB_EXPORT extern char *(*_tc_inflate)(const char *, int, int *, int);
+
+EJDB_EXPORT extern unsigned int (*_tc_getcrc)(const char *, int);
+
+
+
+/*************************************************************************************************
+ * for BZIP2
+ *************************************************************************************************/
+
+
+EJDB_EXPORT extern char *(*_tc_bzcompress)(const char *, int, int *);
+
+EJDB_EXPORT extern char *(*_tc_bzdecompress)(const char *, int, int *);
+
+
+
+/*************************************************************************************************
+ * for test of custom codec functions
+ *************************************************************************************************/
+
+
+EJDB_EXPORT void *_tc_recencode(const void *ptr, int size, int *sp, void *op);
+
+EJDB_EXPORT void *_tc_recdecode(const void *ptr, int size, int *sp, void *op);
+
+#if TCMICROYIELD
+#define TCTESTYIELD() \
+ do { \
+ if(((++_tc_dummy_cnt) & (0x20 - 1)) == 0){ \
+ sched_yield(); \
+ if(_tc_dummy_cnt > 0x1000) _tc_dummy_cnt = (uint32_t)time(NULL) % 0x1000; \
+ } \
+ } while(false)
+#undef assert
+#define assert(TC_expr) \
+ do { \
+ if(!(TC_expr)){ \
+ fprintf(stderr, "assertion failed: %s\n", #TC_expr); \
+ abort(); \
+ } \
+ TCTESTYIELD(); \
+ } while(false)
+#define if(TC_cond) \
+ if((((++_tc_dummy_cnt) & (0x100 - 1)) != 0 || (sched_yield() * 0) == 0) && (TC_cond))
+#define while(TC_cond) \
+ while((((++_tc_dummy_cnt) & (0x100 - 1)) != 0 || (sched_yield() * 0) == 0) && (TC_cond))
+#else
+#define TCTESTYIELD() \
+ do { \
+ } while(false)
+#endif
+
+#ifndef _POSIX_PRIORITY_SCHEDULING
+#define sched_yield() usleep(1000 * 20)
+#endif
+
+
+
+/*************************************************************************************************
+ * utilities for implementation
+ *************************************************************************************************/
+
+
+#define TCNUMBUFSIZ 32 // size of a buffer for a number
+
+/* set a buffer for a variable length number */
+#define TCSETVNUMBUF(TC_len, TC_buf, TC_num) \
+ do { \
+ int _TC_num = (TC_num); \
+ if(_TC_num == 0){ \
+ ((signed char *)(TC_buf))[0] = 0; \
+ (TC_len) = 1; \
+ } else { \
+ (TC_len) = 0; \
+ while(_TC_num > 0){ \
+ int _TC_rem = _TC_num & 0x7f; \
+ _TC_num >>= 7; \
+ if(_TC_num > 0){ \
+ ((signed char *)(TC_buf))[(TC_len)] = -_TC_rem - 1; \
+ } else { \
+ ((signed char *)(TC_buf))[(TC_len)] = _TC_rem; \
+ } \
+ (TC_len)++; \
+ } \
+ } \
+ } while(false)
+
+/* set a buffer for a variable length number of 64-bit */
+#define TCSETVNUMBUF64(TC_len, TC_buf, TC_num) \
+ do { \
+ long long int _TC_num = (TC_num); \
+ if(_TC_num == 0){ \
+ ((signed char *)(TC_buf))[0] = 0; \
+ (TC_len) = 1; \
+ } else { \
+ (TC_len) = 0; \
+ while(_TC_num > 0){ \
+ int _TC_rem = _TC_num & 0x7f; \
+ _TC_num >>= 7; \
+ if(_TC_num > 0){ \
+ ((signed char *)(TC_buf))[(TC_len)] = -_TC_rem - 1; \
+ } else { \
+ ((signed char *)(TC_buf))[(TC_len)] = _TC_rem; \
+ } \
+ (TC_len)++; \
+ } \
+ } \
+ } while(false)
+
+/* read a variable length buffer */
+#define TCREADVNUMBUF(TC_buf, TC_num, TC_step) \
+ do { \
+ TC_num = 0; \
+ int _TC_base = 1; \
+ int _TC_i = 0; \
+ while(true){ \
+ if(((signed char *)(TC_buf))[_TC_i] >= 0){ \
+ TC_num += ((signed char *)(TC_buf))[_TC_i] * _TC_base; \
+ break; \
+ } \
+ TC_num += _TC_base * (((signed char *)(TC_buf))[_TC_i] + 1) * -1; \
+ _TC_base <<= 7; \
+ _TC_i++; \
+ } \
+ (TC_step) = _TC_i + 1; \
+ } while(false)
+
+/* read a variable length buffer */
+#define TCREADVNUMBUF64(TC_buf, TC_num, TC_step) \
+ do { \
+ TC_num = 0; \
+ long long int _TC_base = 1; \
+ int _TC_i = 0; \
+ while(true){ \
+ if(((signed char *)(TC_buf))[_TC_i] >= 0){ \
+ TC_num += ((signed char *)(TC_buf))[_TC_i] * _TC_base; \
+ break; \
+ } \
+ TC_num += _TC_base * (((signed char *)(TC_buf))[_TC_i] + 1) * -1; \
+ _TC_base <<= 7; \
+ _TC_i++; \
+ } \
+ (TC_step) = _TC_i + 1; \
+ } while(false)
+
+/* calculate the size of a buffer for a variable length number */
+#define TCCALCVNUMSIZE(TC_num) \
+ ((TC_num) < 0x80 ? 1 : (TC_num) < 0x4000 ? 2 : (TC_num) < 0x200000 ? 3 : \
+ (TC_num) < 0x10000000 ? 4 : 5)
+
+#define TCCMPLEXICAL(TC_rv, TC_aptr, TC_asiz, TC_bptr, TC_bsiz) \
+ do { \
+ (TC_rv) = 0; \
+ int _TC_min = (TC_asiz) < (TC_bsiz) ? (TC_asiz) : (TC_bsiz); \
+ for(int _TC_i = 0; _TC_i < _TC_min; _TC_i++){ \
+ if(((unsigned char *)(TC_aptr))[_TC_i] != ((unsigned char *)(TC_bptr))[_TC_i]){ \
+ (TC_rv) = ((unsigned char *)(TC_aptr))[_TC_i] - ((unsigned char *)(TC_bptr))[_TC_i]; \
+ break; \
+ } \
+ } \
+ if((TC_rv) == 0) (TC_rv) = (TC_asiz) - (TC_bsiz); \
+ } while(false)
+
+
+/*************************************************************************************************
+ * atomics
+ *************************************************************************************************/
+
+#define TCAS(ptr, expected, desired) __sync_bool_compare_and_swap(ptr, expected, desired)
+
+/*
+#define __atomic_load_n(ptr,order) *(ptr)
+#define __atomic_store_n(ptr,val,order) (*(ptr) = (val), (void)0)
+#define __atomic_exchange_n(ptr,val,order) __sync_lock_test_and_set(ptr, val)
+#define __atomic_compare_exchange_n(ptr,expected,desired,weak,order1,order2) \
+ __sync_bool_compare_and_swap(ptr, *(expected), desired) ? 1 : \
+ (*(expected) = *(ptr), 0)
+
+#define __atomic_add_fetch(ptr,val,order) __sync_add_and_fetch(ptr, val)
+#define __atomic_sub_fetch(ptr,val,order) __sync_sub_and_fetch(ptr, val)
+#define __atomic_or_fetch(ptr,val,order) __sync_or_and_fetch(ptr, val)
+#define __atomic_and_fetch(ptr,val,order) __sync_and_and_fetch(ptr, val)
+#define __atomic_xor_fetch(ptr,val,order) __sync_xor_and_fetch(ptr, val)
+#define __atomic_nand_fetch(ptr,val,order) __sync_nand_and_fetch(ptr, val)
+
+#define __atomic_fetch_add(ptr,val,order) __sync_fetch_and_add(ptr, val)
+#define __atomic_fetch_sub(ptr,val,order) __sync_fetch_and_sub(ptr, val)
+#define __atomic_fetch_or(ptr,val,order) __sync_fetch_and_or(ptr, val)
+#define __atomic_fetch_and(ptr,val,order) __sync_fetch_and_and(ptr, val)
+#define __atomic_fetch_xor(ptr,val,order) __sync_fetch_and_xor(ptr, val)
+#define __atomic_fetch_nand(ptr,val,order) __sync_fetch_and_nand(ptr, val)
+*/
+
+
+#endif // duplication check
+
+// END OF FILE