Import ( ' env ' , ' arch ' )
cpp_path = [
" #selfdrive " ,
" #phonelibs/acado/include " ,
" #phonelibs/acado/include/acado " ,
" #phonelibs/qpoases/INCLUDE " ,
" #phonelibs/qpoases/INCLUDE/EXTRAS " ,
" #phonelibs/qpoases/SRC/ " ,
" #phonelibs/qpoases " ,
" lib_mpc_export " ,
]
generated_c = [
' lib_mpc_export/acado_auxiliary_functions.c ' ,
' lib_mpc_export/acado_qpoases_interface.cpp ' ,
' lib_mpc_export/acado_integrator.c ' ,
' lib_mpc_export/acado_solver.c ' ,
]
generated_h = [
' lib_mpc_export/acado_common.h ' ,
' lib_mpc_export/acado_auxiliary_functions.h ' ,
' lib_mpc_export/acado_qpoases_interface.hpp ' ,
]
interface_dir = Dir ( ' lib_mpc_export ' )
SConscript ( [ ' #phonelibs/qpoases/SConscript ' ] , variant_dir = ' lib_qp ' , exports = [ ' interface_dir ' ] )
if GetOption ( ' mpc_generate ' ) :
generator_cpp = File ( ' generator.cpp ' )
acado_libs = [ File ( f " #phonelibs/acado/ { arch } /lib/libacado_toolkit.a " ) ,
File ( f " #phonelibs/acado/ { arch } /lib/libacado_casadi.a " ) ,
File ( f " #phonelibs/acado/ { arch } /lib/libacado_csparse.a " ) ]
generator = env . Program ( ' generator ' , generator_cpp , LIBS = acado_libs , CPPPATH = cpp_path ,
CCFLAGS = env [ ' CCFLAGS ' ] + [ " -Wno-deprecated " , " -Wno-overloaded-shift-op-parentheses " ] )
cmd = f " cd { Dir ( ' . ' ) . get_abspath ( ) } && { generator [ 0 ] . get_abspath ( ) } "
env . Command ( generated_c + generated_h , generator , cmd )
mpc_files = [ " lateral_mpc.c " ] + generated_c
env . SharedLibrary ( ' mpc ' , mpc_files , LIBS = [ ' m ' , ' qpoases ' ] , LIBPATH = [ ' lib_qp ' ] , CPPPATH = cpp_path )