SConstruct
4.32 KB
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
import os
import platform
opts = Options('DefaultOptions.py')
opts.Add(BoolOption('DEBUG', 'Set to 1 to build with debug symbols', 0))
opts.Add(BoolOption('GUI', 'Set to 1 to build with graphical interface support', 1))
debug = ARGUMENTS.get('DEBUG', 0)
gui = ARGUMENTS.get('GUI', 1)
env = Environment(options = opts, ENV = os.environ)
if debug:
env.Append(CPPDEFINES = {'DEBUG': None})
if gui:
env.Append(CPPDEFINES = {'_WITH_GRAPHISM_': None})
if env['PLATFORM'] == 'posix':
host = 'linux'
env.Append(CPPDEFINES = {'_LINUX_': None})
env.Append(CCFLAGS = ' -O2 -c -Wall -Wstrict-prototypes')
sqliteFlags = ' -O2 -c'
vm_output_name = 'anbexec_with_symbols'
elif env['PLATFORM'] == 'win32':
host = 'win32'
sqliteFlags = ' -O2 -c'
vm_output_name = 'anbexec'
env['DEVDIR'] = os.path.join('..')
env['BASEDIR'] = os.path.join(env['DEVDIR'], '..')
env['TRDDIR'] = os.path.join(env['BASEDIR'], 'third_dev')
env['BINDIR'] = os.path.join(env['ENV']['HOME'], 'bin')
env.Append(CPPPATH = [os.path.join(env['DEVDIR'], 'include'),
'.',
'src',
os.path.join(env['TRDDIR'], 'sqlite3'),
])
if env['PLATFORM'] == 'win32':
env.Append(CPPPATH = [os.path.join(env['TRDDIR'], 'openssl', 'include')])
env.Append(LIBPATH = [os.path.join(env['TRDDIR'], 'openssl', 'lib', 'win32')])
env.BuildDir('build', 'src', duplicate=0)
env.BuildDir(os.path.join('build', 'share'), os.path.join(env['DEVDIR'], 'share'), duplicate=0)
env.BuildDir(os.path.join('build', 'cipher'), os.path.join(env['DEVDIR'], 'cipher'), duplicate=0)
env.BuildDir(os.path.join('build', 'graph'), os.path.join('src', host), duplicate=0)
env.BuildDir(os.path.join('build', 'openssl'), os.path.join(env['TRDDIR'], 'openssl'), duplicate=0)
env.BuildDir(os.path.join('build', 'sqlite'), os.path.join(env['TRDDIR'], 'sqlite3'), duplicate=0)
main_src = [os.path.join('build', x) for x in Split("""
vmalloc.cpp vm.cpp vmtools.cpp graphics.cpp sslstuff.cpp time.c linuxstuff.cpp
AnubisAllocator.cpp AnubisFileLocker.cpp AnubisProcess.cpp
syscall.cpp serialize.cpp
""")]
share_src = [os.path.join('build', 'share', x) for x in Split("""
FileIO.cpp
IniFile.cpp
String.cpp
DebugLog.cpp
MultiPath.cpp
StringList.cpp
List.cpp
""")]
special_src = [os.path.join('build', x) for x in Split("""
anbexec.cpp
""")]
cipher_src = [os.path.join('build', 'cipher', x) for x in Split("""
blowfish.c sha1.c
""")]
graph_src = [os.path.join('build', 'graph', x) for x in Split("""
host_graph.cpp
""")]
sqlite3_src = [os.path.join('build', 'sqlite', x) for x in Split("""
alter.c analyze.c attach.c auth.c btree.c build.c callback.c complete.c
date.c delete.c expr.c
fts1.c fts1_hash.c fts1_porter.c fts1_tokenizer1.c
func.c hash.c insert.c legacy.c loadext.c main.c opcodes.c
os.c os_os2.c os_unix.c os_win.c pager.c parse.c pragma.c prepare.c
printf.c random.c select.c table.c tokenize.c trigger.c update.c
utf.c util.c vacuum.c vdbe.c vdbeapi.c vdbeaux.c vdbefifo.c vdbemem.c
vtab.c where.c
""")]
sqliteDefs = env['CPPDEFINES'].copy()
sqliteDefs['NO_TCL'] = None
#
#
#
main_obj = env.Object(main_src)
share_obj = env.Object(share_src)
special_obj = env.Object(special_src)
cipher_obj = env.Object(cipher_src)
graph_obj = env.Object(graph_src)
sqlite3_obj = env.Object(sqlite3_src, CCFLAGS = sqliteFlags, CPPDEFINES = sqliteDefs)
env.Append(LIBS=['ssl', 'crypto', 'jpeg'])
if env['PLATFORM'] == 'posix':
env.Append(LIBPATH = [os.path.join('/', 'usr', 'X11R6', 'lib')])
env.Append(LIBS=['X11'])
anbexec = env.Program(vm_output_name, main_obj + share_obj + special_obj + cipher_obj + graph_obj + sqlite3_obj)
if env['PLATFORM'] == 'posix':
anbexec = env.Command('anbexec', vm_output_name, 'strip -o $TARGET $SOURCE')
if env['PLATFORM'] == 'posix':
installPath = os.path.join(env['BASEDIR'], 'anubis_distrib', 'linux_install')
elif env['PLATFORM'] == 'win32':
installPath = os.path.join(env['BASEDIR'], 'anubis_distrib', 'win32_install')
env.Install(installPath, anbexec)
env.Install(env['BINDIR'], anbexec)
env.Alias('install', [installPath, env['BINDIR']])
env.Alias('all', [anbexec, 'install'])
Default(anbexec)
Help("""
Type: 'scons vm' to build the production program,
'scons debug' to build the debug version.
"""
+ opts.GenerateHelpText(env))
print 'BUILD_TARGETS is', map(str, BUILD_TARGETS)