aarch64: ubuntu build support (#29171)

* Add support for aarch64 pc linux

* Add new libyuv path to release files

* Add libyuv's x86_64 lib dir

* Move left-over platform specific dirs from files_common

* Remove libyuv/lib directory (duplicate)

* Fix mpc Sconscripts

* Remove acados lib path from mpc sources

* Fix typo

* Add watch3 exec on aarch64
old-commit-hash: c640429406
vw-mqb-aeb
Kacper Rączy 2 years ago committed by GitHub
parent 2c5cbd6fc0
commit edc31db6df
  1. 32
      SConstruct
  2. 4
      release/files_common
  3. 3
      release/files_pc
  4. 2
      release/files_tici
  5. 2
      selfdrive/controls/lib/lateral_mpc_lib/SConscript
  6. 2
      selfdrive/controls/lib/longitudinal_mpc_lib/SConscript
  7. 3
      selfdrive/modeld/SConscript
  8. 2
      selfdrive/navd/SConscript
  9. 6
      selfdrive/ui/SConscript
  10. 1
      third_party/acados/aarch64
  11. 1
      third_party/libyuv/aarch64
  12. 3
      third_party/libyuv/lib/libyuv.a
  13. 0
      third_party/libyuv/x86_64/include
  14. 0
      third_party/libyuv/x86_64/lib/libyuv.a
  15. 3
      third_party/mapbox-gl-native-qt/aarch64/libqmapboxgl.so

@ -64,13 +64,18 @@ AddOption('--no-test',
default=os.path.islink(Dir('#laika/').abspath),
help='skip building test files')
## Architecture name breakdown (arch)
## - larch64: linux tici aarch64
## - aarch64: linux pc aarch64
## - x86_64: linux pc x64
## - Darwin: mac x64 or arm64
real_arch = arch = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip()
if platform.system() == "Darwin":
arch = "Darwin"
brew_prefix = subprocess.check_output(['brew', '--prefix'], encoding='utf8').strip()
if arch == "aarch64" and AGNOS:
elif arch == "aarch64" and AGNOS:
arch = "larch64"
assert arch in ["larch64", "aarch64", "x86_64", "Darwin"]
lenv = {
"PATH": os.environ['PATH'],
@ -132,21 +137,25 @@ else:
f"{brew_prefix}/opt/openssl@3.0/include",
]
lenv["DYLD_LIBRARY_PATH"] = lenv["LD_LIBRARY_PATH"]
# Linux 86_64
# Linux
else:
libpath = [
"#third_party/acados/x86_64/lib",
"#third_party/snpe/x86_64-linux-clang",
"#third_party/libyuv/x64/lib",
"#third_party/mapbox-gl-native-qt/x86_64",
f"#third_party/acados/{arch}/lib",
f"#third_party/libyuv/{arch}/lib",
f"#third_party/mapbox-gl-native-qt/{arch}",
"#cereal",
"#common",
"/usr/lib",
"/usr/local/lib",
]
rpath += [
Dir("#third_party/snpe/x86_64-linux-clang").abspath,
]
if arch == "x86_64":
libpath += [
f"#third_party/snpe/{arch}"
]
rpath += [
Dir(f"#third_party/snpe/{arch}").abspath,
]
if GetOption('asan'):
ccflags = ["-fsanitize=address", "-fno-omit-frame-pointer"]
@ -267,9 +276,6 @@ envCython["CCFLAGS"].remove("-Werror")
envCython["LIBS"] = []
if arch == "Darwin":
envCython["LINKFLAGS"] = ["-bundle", "-undefined", "dynamic_lookup"] + darwin_rpath_link_flags
elif arch == "aarch64":
envCython["LINKFLAGS"] = ["-shared"]
envCython["LIBS"] = [os.path.basename(py_include)]
else:
envCython["LINKFLAGS"] = ["-pthread", "-shared"]

@ -432,15 +432,11 @@ third_party/kaitai/*.h
third_party/kaitai/*.cpp
third_party/libyuv/include/**
third_party/libyuv/lib/**
third_party/libyuv/larch64/**
third_party/snpe/include/**
third_party/snpe/dsp**
third_party/acados/.gitignore
third_party/acados/x86_64/**
third_party/acados/larch64/**
third_party/acados/include/**
third_party/acados/acados_template/**

@ -2,6 +2,7 @@ selfdrive/modeld/runners/onnx*
third_party/mapbox-gl-native-qt/x86_64/*.so
third_party/libyuv/x64/**
third_party/libyuv/x86_64/**
third_party/snpe/x86_64/**
third_party/snpe/x86_64-linux-clang/**
third_party/acados/x86_64/**

@ -1,6 +1,8 @@
third_party/libyuv/larch64/**
third_party/snpe/larch64**
third_party/snpe/aarch64-ubuntu-gcc7.5/*
third_party/mapbox-gl-native-qt/include/*
third_party/acados/larch64/**
system/timezoned.py

@ -49,8 +49,6 @@ acados_templates_dir = '#third_party/acados/acados_template/c_templates_tera'
source_list = ['lat_mpc.py',
'#/selfdrive/modeld/constants.py',
f'{acados_dir}/include/acados_c/ocp_nlp_interface.h',
f'{acados_dir}/x86_64/lib/libacados.so',
f'{acados_dir}/larch64/lib/libacados.so',
f'{acados_templates_dir}/acados_solver.in.c',
]

@ -56,8 +56,6 @@ acados_templates_dir = '#third_party/acados/acados_template/c_templates_tera'
source_list = ['long_mpc.py',
'#/selfdrive/modeld/constants.py',
f'{acados_dir}/include/acados_c/ocp_nlp_interface.h',
f'{acados_dir}/x86_64/lib/libacados.so',
f'{acados_dir}/larch64/lib/libacados.so',
f'{acados_templates_dir}/acados_solver.in.c',
]

@ -55,7 +55,8 @@ else:
del libs[libs.index('OpenCL')]
lenv['FRAMEWORKS'] = ['OpenCL']
# no SNPE on Mac
if arch == "Darwin" or arch == "aarch64":
# no SNPE on Mac and ARM Linux
del libs[libs.index('SNPE')]
del common_src[common_src.index('runners/snpemodel.cc')]

@ -6,7 +6,7 @@ libs = ['qt_widgets', 'qt_util', 'qmapboxgl', common, messaging, cereal, visioni
if arch == 'larch64':
libs.append('EGL')
if arch in ['larch64', 'x86_64']:
if arch in ['larch64', 'aarch64', 'x86_64']:
if arch == 'x86_64':
rpath = Dir(f"#third_party/mapbox-gl-native-qt/{arch}").srcnode().abspath
map_env["RPATH"] += [rpath, ]

@ -9,9 +9,9 @@ base_libs = [common, messaging, cereal, visionipc, transformations, 'zmq',
if arch == 'larch64':
base_libs.append('EGL')
maps = arch in ['larch64', 'x86_64']
maps = arch in ['larch64', 'aarch64', 'x86_64']
if maps and arch == 'x86_64':
if maps and arch != 'larch64':
rpath = [Dir(f"#third_party/mapbox-gl-native-qt/{arch}").srcnode().abspath]
qt_env["RPATH"] += rpath
@ -131,5 +131,5 @@ if GetOption('extras'):
assert f[0].get_size() < 300*1e3
# build watch3
if arch in ['x86_64', 'Darwin'] or GetOption('extras'):
if arch in ['x86_64', 'aarch64', 'Darwin'] or GetOption('extras'):
qt_env.Program("watch3", ["watch3.cc"], LIBS=qt_libs + ['common', 'json11', 'zmq', 'visionipc', 'messaging'])

@ -0,0 +1 @@
larch64/

@ -0,0 +1 @@
larch64/

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:770dac807d5a8ad67e077b41826e375b81a0d50b0c43c5d1fb1cd6ae8a19d6d3
size 439498

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7fb33cb09b184a689eaa7f78c839d12a5bdd5b6f576d55758ec7e1246187a53f
size 9300680
Loading…
Cancel
Save