-
Notifications
You must be signed in to change notification settings - Fork 3
/
wscript
72 lines (55 loc) · 1.78 KB
/
wscript
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
import Options
VERSION = '0.0.1'
APPNAME = 'jsonconfig'
def options(opt):
opt.load('compiler_cxx')
opt.load('unittest_gtest')
opt.add_option('--enable-gcov',
action='store_true',
default=False,
dest='gcov',
help='only for debug')
def configure(conf):
conf.env.CXXFLAGS += ['-O2', '-Wall', '-g', '-pipe']
conf.load('compiler_cxx')
conf.load('unittest_gtest')
conf.check_cfg(package='pficommon', args='--cflags --libs')
if Options.options.gcov:
conf.env.append_value('CXXFLAGS', '-fprofile-arcs')
conf.env.append_value('CXXFLAGS', '-ftest-coverage')
conf.env.append_value('LINKFLAGS', '-lgcov')
conf.env.append_value('LINKFLAGS', '-fprofile-arcs')
conf.env.append_value('LINKFLAGS', '-ftest-coverage')
def build(bld):
bld.recurse('src')
bld.program(
source='sample/sample.cpp',
target='jsonconfig_sample',
includes='src',
use='jsonconfig'
)
def cpplint(ctx):
filters = [
'-runtime/references',
'-legal/copyright',
'-build/include_order',
]
cpplint_args = '--filter=%s --extensions=cpp,hpp' % ','.join(filters)
src_dir = ctx.path.find_node('src')
files = []
for f in src_dir.ant_glob('**/*.cpp **/*.hpp'):
files.append(f.path_from(ctx.path))
args = 'cpplint.py %s %s 2>&1 | grep -v "^\(Done\|Total\)"' \
% (cpplint_args, ' '.join(files))
result = ctx.exec_command(args)
if result == 0:
ctx.fatal('cpplint failed')
def gcovr(ctx):
excludes = [
'.*\\.unittest-gtest.*',
'.*_test\\.cpp',
]
args = 'gcovr --branches -r . '
for e in excludes:
args += ' -e "%s"' % e
ctx.exec_command(args)