|
|
|
@ -7,12 +7,15 @@ import os.path
@@ -7,12 +7,15 @@ import os.path
|
|
|
|
|
import os |
|
|
|
|
import sys |
|
|
|
|
import subprocess |
|
|
|
|
import json |
|
|
|
|
import fnmatch |
|
|
|
|
sys.path.insert(0, 'Tools/ardupilotwaf/') |
|
|
|
|
|
|
|
|
|
import ardupilotwaf |
|
|
|
|
import boards |
|
|
|
|
|
|
|
|
|
from waflib import Build, ConfigSet, Configure, Context, Utils |
|
|
|
|
from waflib.Configure import conf |
|
|
|
|
|
|
|
|
|
# TODO: implement a command 'waf help' that shows the basic tasks a |
|
|
|
|
# developer might want to do: e.g. how to configure a board, compile a |
|
|
|
@ -40,6 +43,9 @@ def _set_build_context_variant(board):
@@ -40,6 +43,9 @@ def _set_build_context_variant(board):
|
|
|
|
|
c.variant = board |
|
|
|
|
|
|
|
|
|
def init(ctx): |
|
|
|
|
# Generate Task List, so that VS Code extension can keep track |
|
|
|
|
# of changes to possible build targets |
|
|
|
|
generate_tasklist(ctx, False) |
|
|
|
|
env = ConfigSet.ConfigSet() |
|
|
|
|
try: |
|
|
|
|
p = os.path.join(Context.out_dir, Build.CACHE_DIR, Build.CACHE_SUFFIX) |
|
|
|
@ -399,6 +405,39 @@ def collect_dirs_to_recurse(bld, globs, **kw):
@@ -399,6 +405,39 @@ def collect_dirs_to_recurse(bld, globs, **kw):
|
|
|
|
|
def list_boards(ctx): |
|
|
|
|
print(*boards.get_boards_names()) |
|
|
|
|
|
|
|
|
|
@conf |
|
|
|
|
def ap_periph_boards(ctx): |
|
|
|
|
return boards.get_ap_periph_boards() |
|
|
|
|
|
|
|
|
|
def generate_tasklist(ctx, do_print=True): |
|
|
|
|
boardlist = boards.get_boards_names() |
|
|
|
|
ap_periph_targets = boards.get_ap_periph_boards() |
|
|
|
|
tasks = [] |
|
|
|
|
with open(os.path.join(Context.top_dir, "tasklist.json"), "w") as tlist: |
|
|
|
|
for board in boardlist: |
|
|
|
|
task = {} |
|
|
|
|
task['configure'] = board |
|
|
|
|
if board in ap_periph_targets: |
|
|
|
|
if 'sitl' not in board: |
|
|
|
|
# we only support AP_Periph and bootloader builds |
|
|
|
|
task['targets'] = ['AP_Periph', 'bootloader'] |
|
|
|
|
else: |
|
|
|
|
task['targets'] = ['AP_Periph'] |
|
|
|
|
elif 'iofirmware' in board: |
|
|
|
|
task['targets'] = ['iofirmware', 'bootloader'] |
|
|
|
|
else: |
|
|
|
|
if 'sitl' in board or 'SITL' in board: |
|
|
|
|
task['targets'] = ['antennatracker', 'copter', 'heli', 'plane', 'rover', 'sub', 'replay'] |
|
|
|
|
elif 'linux' in board: |
|
|
|
|
task['targets'] = ['antennatracker', 'copter', 'heli', 'plane', 'rover', 'sub'] |
|
|
|
|
else: |
|
|
|
|
task['targets'] = ['antennatracker', 'copter', 'heli', 'plane', 'rover', 'sub', 'bootloader'] |
|
|
|
|
task['buildOptions'] = '--upload' |
|
|
|
|
tasks.append(task) |
|
|
|
|
tlist.write(json.dumps(tasks)) |
|
|
|
|
if do_print: |
|
|
|
|
print(json.dumps(tasks)) |
|
|
|
|
|
|
|
|
|
def board(ctx): |
|
|
|
|
env = ConfigSet.ConfigSet() |
|
|
|
|
try: |
|
|
|
|