Mcucpp

Форк
0
/
hosted.py 
70 строк · 2.6 Кб
1

2
import os
3
from SCons.Script import *
4
import subprocess
5

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)
11
	#print (testNode)
12
	
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']))
21

22
	return target, source
23
	
24
def generate(env, **kw):
25
	env['ENV'] = os.environ
26

27
	if env['PLATFORM'] == 'win32' and (env.Detect('mingw32-gcc') or env.Detect('gcc')):
28
		env.Tool('mingw')
29
	else:
30
		env.Tool('default')
31
	
32
	print( 'Used C compiler "%s"' % env['CC'])
33
	
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'], 
41
		'#/./'])
42
	
43
	if env['CC'] == 'cl':
44
		env.Append(CXXFLAGS = ['/wd4503', '/wd4530'])
45
		env.Append(CPPDEFINES=['_VARIADIC_MAX=15'])
46
		env.Append(CPPPATH=['%s/tests/include' % env['MCUCPP_HOME']])
47
	
48
	if env['CC'] == 'gcc':
49
		env.Append(CXXFLAGS = ['-std=gnu++17', '-O0', '-g'])
50
		env.Append(CXXFLAGS = ['-static', '-static-libgcc', '-static-libstdc++' ])
51
		
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'})
54
	
55
	programBuilder = env['BUILDERS']['Program']
56
	
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])
61
	
62
	env.Append(BUILDERS = {'Test' :  testBuilder})
63
	
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"
69

70
def exists(env):
71
	return True

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.