3
from SCons.Script import *
6
def unit_test_run(env, target, source):
7
print('unit_test_run', target, source)
8
testApp = str(target[0].abspath)
9
subprocess.call([testApp])
10
#testNode = env.Command('run_test_%s' % str(target[0]), '', testApp)
13
def unit_test_emitter(target, source, env):
14
build_dir = os.path.dirname(target[0].abspath)
15
source.append(env.Object(os.path.join(build_dir, 'gmock_main'),
16
'%s/3rdparty/googletest/googlemock/src/gmock_main.cc' % env['MCUCPP_HOME']))
17
source.append(env.Object(os.path.join(build_dir, 'gtest-all'),
18
'%s/3rdparty/googletest/googletest/src/gtest-all.cc' % env['MCUCPP_HOME']))
19
source.append(env.Object(os.path.join(build_dir, 'gmock-all'),
20
'%s/3rdparty/googletest/googlemock/src/gmock-all.cc' % env['MCUCPP_HOME']))
24
def generate(env, **kw):
25
env['ENV'] = os.environ
27
if env['PLATFORM'] == 'win32' and (env.Detect('mingw32-gcc') or env.Detect('gcc')):
32
print( 'Used C compiler "%s"' % env['CC'])
34
env.Append(CPPPATH = [\
35
'%s/3rdparty/googletest/googletest/include' % env['MCUCPP_HOME'],
36
'%s/3rdparty/googletest/googlemock/include' % env['MCUCPP_HOME'],
37
'%s/3rdparty/googletest/googletest' % env['MCUCPP_HOME'],
38
'%s/3rdparty/googletest/googlemock' % env['MCUCPP_HOME'],
39
'%s/mcucpp' % env['MCUCPP_HOME'],
40
'%s/mcucpp/Test' % env['MCUCPP_HOME'],
44
env.Append(CXXFLAGS = ['/wd4503', '/wd4530'])
45
env.Append(CPPDEFINES=['_VARIADIC_MAX=15'])
46
env.Append(CPPPATH=['%s/tests/include' % env['MCUCPP_HOME']])
48
if env['CC'] == 'gcc':
49
env.Append(CXXFLAGS = ['-std=gnu++17', '-O0', '-g'])
50
env.Append(CXXFLAGS = ['-static', '-static-libgcc', '-static-libstdc++' ])
52
if env['PLATFORM'] == 'win32' and (env.Detect('mingw32-gcc') or env.Detect('gcc')):
53
env.Append(CPPDEFINES={'GTEST_OS_WINDOWS':'1', 'GTEST_HAS_PTHREAD':'0', 'EMULATE_GLIBC':'1', '_EMULATE_GLIBC':'1'})
55
programBuilder = env['BUILDERS']['Program']
57
testBuilder = Builder(action = [programBuilder.action, unit_test_run],
58
src_suffix = programBuilder.src_suffix,
59
suffix = programBuilder.suffix,
60
emitter = [programBuilder.emitter, unit_test_emitter])
62
env.Append(BUILDERS = {'Test' : testBuilder})
64
env['CCCOMSTR'] = "Host Compiling C: $TARGET"
65
env['CXXCOMSTR'] = "Host Compiling C++: $TARGET"
66
env['ASCOMSTR'] = "Host Assembling: $TARGET"
67
env['ASPPCOMSTR'] = "Host Assembling: $TARGET"
68
env['LINKCOMSTR'] = "Host Linking: $TARGET"