Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Ardupilot
GitHub Repository: Ardupilot/ardupilot
Path: blob/master/Tools/ardupilotwaf/linux.py
9589 views
1
# encoding: utf-8
2
3
"""
4
Waf tool for Linux 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_Linux/hwdef/scripts'))
18
import linux_hwdef # noqa:501
19
20
21
@feature('linux_ap_program')
22
@after_method('process_source')
23
def linux_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 += ['linux_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 linux_hwdef.py'''
57
hwdef_dir = os.path.join(env.SRCROOT, 'libraries/AP_HAL_Linux/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 = linux_hwdef.LinuxHWDef(
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
if bld.env.HAL_NUM_CAN_IFACES:
81
bld.get_board().with_can = True
82
if bld.env.WITH_LITTLEFS:
83
bld.get_board().with_littlefs = True
84
85