import os
Import ( ' qt_env ' , ' arch ' , ' common ' , ' messaging ' , ' gpucommon ' , ' visionipc ' ,
' cereal ' , ' transformations ' )
base_libs = [ gpucommon , common , messaging , cereal , visionipc , transformations , ' zmq ' ,
' capnp ' , ' kj ' , ' m ' , ' OpenCL ' , ' ssl ' , ' crypto ' , ' pthread ' ] + qt_env [ " LIBS " ]
maps = arch in [ ' larch64 ' , ' x86_64 ' ] and \
os . path . exists ( File ( " qt/maps/map.cc " ) . srcnode ( ) . abspath )
if arch == ' aarch64 ' :
base_libs + = [ ' log ' , ' utils ' , ' gui ' , ' ui ' , ' CB ' , ' gsl ' , ' adreno_utils ' , ' cutils ' , ' uuid ' ]
if maps and arch in [ ' x86_64 ' ] :
rpath = [ Dir ( f " #phonelibs/mapbox-gl-native-qt/ { arch } " ) . srcnode ( ) . abspath ]
qt_env [ " RPATH " ] + = rpath
if arch == " Darwin " :
del base_libs [ base_libs . index ( ' OpenCL ' ) ]
qt_env [ ' FRAMEWORKS ' ] + = [ ' OpenCL ' ]
widgets_src = [ " qt/widgets/input.cc " , " qt/widgets/drive_stats.cc " ,
" qt/widgets/ssh_keys.cc " , " qt/widgets/toggle.cc " , " qt/widgets/controls.cc " ,
" qt/widgets/offroad_alerts.cc " , " qt/widgets/setup.cc " , " qt/widgets/keyboard.cc " ,
" qt/widgets/scrollview.cc " , " #phonelibs/qrcode/QrCode.cc " , " qt/api.cc " ,
" qt/request_repeater.cc " ]
if arch != ' aarch64 ' :
widgets_src + = [ " qt/offroad/networking.cc " , " qt/offroad/wifiManager.cc " ]
if maps :
base_libs + = [ ' qmapboxgl ' ]
widgets_src + = [ " qt/maps/map_helpers.cc " , " qt/maps/map.cc " ]
qt_env [ ' CPPDEFINES ' ] = [ " ENABLE_MAPS " ]
widgets = qt_env . Library ( " qt_widgets " , widgets_src , LIBS = base_libs )
qt_libs = [ widgets ] + base_libs
# spinner and text window
qt_env . Program ( " qt/text " , [ " qt/text.cc " ] , LIBS = qt_libs )
qt_env . Program ( " qt/spinner " , [ " qt/spinner.cc " ] , LIBS = base_libs )
# build main UI
qt_src = [ " main.cc " , " ui.cc " , " paint.cc " , " qt/sidebar.cc " , " qt/onroad.cc " ,
" qt/window.cc " , " qt/home.cc " , " qt/offroad/settings.cc " ,
" qt/offroad/onboarding.cc " , " #phonelibs/nanovg/nanovg.c " ]
qt_env . Program ( " _ui " , qt_src , LIBS = qt_libs )
# setup, factory resetter, and installer
if arch != ' aarch64 ' and " BUILD_SETUP " in os . environ :
qt_env . Program ( " qt/setup/reset " , [ " qt/setup/reset.cc " ] , LIBS = qt_libs )
qt_env . Program ( " qt/setup/setup " , [ " qt/setup/setup.cc " ] , LIBS = qt_libs + [ ' curl ' , ' common ' , ' json11 ' ] )
qt_env . Program ( " qt/setup/wifi " , [ " qt/setup/wifi.cc " ] , LIBS = qt_libs + [ ' common ' , ' json11 ' ] )
installers = [
( " openpilot " , " master " ) ,
( " openpilot_test " , " release3-staging " ) ,
( " openpilot_internal " , " master " ) ,
( " dashcam " , " dashcam3-staging " ) ,
( " dashcam_test " , " dashcam3-staging " ) ,
]
for name , branch in installers :
d = { ' BRANCH ' : f " ' \" { branch } \" ' " }
if " internal " in name :
d [ ' INTERNAL ' ] = " 1 "
import requests
r = requests . get ( " https://github.com/commaci2.keys " )
r . raise_for_status ( )
d [ ' SSH_KEYS ' ] = f ' \\ " { r . text . strip ( ) } \\ " '
obj = qt_env . Object ( f " qt/setup/installer_ { name } .o " , [ " qt/setup/installer.cc " ] , CPPDEFINES = d )
qt_env . Program ( f " qt/setup/installer_ { name } " , obj , LIBS = qt_libs , CPPDEFINES = d )
# build headless replay
if arch == ' x86_64 ' and os . path . exists ( Dir ( " #tools/ " ) . get_abspath ( ) ) :
qt_env [ ' CXXFLAGS ' ] + = [ " -Wno-deprecated-declarations " ]
replay_lib_src = [ " replay/replay.cc " , " replay/filereader.cc " , " replay/framereader.cc " ]
replay_lib = qt_env . Library ( " qt_replay " , replay_lib_src , LIBS = base_libs )
replay_libs = [ replay_lib , ' avutil ' , ' avcodec ' , ' avformat ' , ' swscale ' , ' bz2 ' ] + qt_libs
qt_env . Program ( " replay/replay " , [ " replay/main.cc " ] , LIBS = replay_libs )