1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
# -*- mode: python; -*-
import re
import textwrap
Import("env windows darwin solaris linux freebsd")
env = env.Clone()
env.InjectThirdPartyIncludePaths(libraries=['snappy', 'zlib'])
env.Append(CPPPATH=[
"src/include",
])
if windows:
env.Append(CPPPATH=["build_win"])
elif darwin:
env.Append(CPPPATH=["build_darwin"])
elif solaris:
env.Append(CPPPATH=["build_solaris"])
elif freebsd:
env.Append(CPPPATH=["build_freebsd"])
elif linux:
env.Append(CPPPATH=["build_linux"])
env.Append(CPPDEFINES=["_GNU_SOURCE"])
else:
print("Wiredtiger is not supported on this platform. " +
"Please generate an approriate wiredtiger_config.h")
Exit(1)
useZlib = True
useSnappy = True
version_file = 'build_posix/aclocal/version-set.m4'
VERSION_MAJOR = None
VERSION_MINOR = None
VERSION_PATCH = None
VERSION_STRING = None
# Read the version information from the version-set.m4 file
for l in open(File(version_file).srcnode().abspath):
if re.match(r'^VERSION_[A-Z]+', l):
exec(l)
if (VERSION_MAJOR == None or
VERSION_MINOR == None or
VERSION_PATCH == None or
VERSION_STRING == None):
print "Failed to find version variables in " + version_file
Exit(1)
wiredtiger_includes = """
#include <sys/types.h>
#ifndef _WIN32
#include <inttypes.h>
#endif
#include <stdarg.h>
#include <stdint.h>
#include <stdio.h>
"""
wiredtiger_includes = textwrap.dedent(wiredtiger_includes)
replacements = {
'@VERSION_MAJOR@' : VERSION_MAJOR,
'@VERSION_MINOR@' : VERSION_MINOR,
'@VERSION_PATCH@' : VERSION_PATCH,
'@VERSION_STRING@' : VERSION_STRING,
'@uintmax_t_decl@': "",
'@uintptr_t_decl@': "",
'@off_t_decl@' : 'typedef int64_t wt_off_t;' if windows else "typedef off_t wt_off_t;",
'@wiredtiger_includes_decl@': wiredtiger_includes
}
env.Substfile(
target='wiredtiger.h',
source=[
'src/include/wiredtiger.in',
],
SUBST_DICT=replacements)
#
# WiredTiger library
#
filelistfile = "dist/filelist.win" if windows else 'dist/filelist'
wtsources = []
with open(File(filelistfile).srcnode().abspath) as filelist:
wtsources = [line.strip()
for line in filelist
if not line.startswith("#") and len(line.strip()) >= 1]
if useZlib:
env.Append(CPPDEFINES=['HAVE_BUILTIN_EXTENSION_ZLIB'])
wtsources.append("ext/compressors/zlib/zlib_compress.c")
if useSnappy:
env.Append(CPPDEFINES=['HAVE_BUILTIN_EXTENSION_SNAPPY'])
wtsources.append("ext/compressors/snappy/snappy_compress.c")
wtlib = env.Library(
target="wiredtiger",
source=wtsources)
env.Depends(wtlib, [filelistfile, version_file])
|