Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Ardupilot
GitHub Repository: Ardupilot/ardupilot
Path: blob/master/Tools/ardupilotwaf/sitl.py
9734 views
1
# encoding: utf-8
2
3
"""
4
Waf tool for SITL build
5
6
AP_FLAKE8_CLEAN
7
"""
8
9
from waflib.TaskGen import after_method, feature
10
11
import os
12
import sys
13
import traceback
14
15
import hal_common
16
17
sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), '../../libraries/AP_HAL_SITL/hwdef/scripts'))
18
import sitl_hwdef # noqa:501
19
20
21
@feature('sitl_ap_program')
22
@after_method('process_source')
23
def sitl_firmware(self):
24
pass
25
26
27
def configure(cfg):
28
29
def srcpath(path):
30
return cfg.srcnode.make_node(path).abspath()
31
32
def bldpath(path):
33
return bldnode.make_node(path).abspath()
34
35
env = cfg.env
36
bldnode = cfg.bldnode.make_node(cfg.variant)
37
env.SRCROOT = srcpath('')
38
env.BUILDROOT = bldpath('')
39
40
def srcpath(path):
41
return cfg.srcnode.make_node(path).abspath()
42
43
def bldpath(path):
44
return bldnode.make_node(path).abspath()
45
env.AP_PROGRAM_FEATURES += ['sitl_ap_program']
46
47
try:
48
hwdef_obj = generate_hwdef_h(env)
49
except Exception:
50
traceback.print_exc()
51
cfg.fatal("Failed to process hwdef.dat")
52
hal_common.process_hwdef_results(cfg, hwdef_obj)
53
54
55
def generate_hwdef_h(env):
56
'''run sitl_hwdef.py'''
57
hwdef_dir = os.path.join(env.SRCROOT, 'libraries/AP_HAL_SITL/hwdef')
58
59
if len(env.HWDEF) == 0:
60
env.HWDEF = os.path.join(hwdef_dir, env.BOARD, 'hwdef.dat')
61
hwdef_out = env.BUILDROOT
62
if not os.path.exists(hwdef_out):
63
os.mkdir(hwdef_out)
64
hwdef = [env.HWDEF]
65
if env.HWDEF_EXTRA:
66
hwdef.append(env.HWDEF_EXTRA)
67
68
hwdef_obj = sitl_hwdef.SITLHWDef(
69
outdir=hwdef_out,
70
hwdef=hwdef,
71
quiet=False,
72
)
73
hwdef_obj.run()
74
75
return hwdef_obj
76
77
78
def pre_build(bld):
79
'''pre-build hook to change dynamic sources'''
80
pass
81
82