#!/usr/bin/env bash
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set  -e
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  [  -z " $SKIP_PROMPT "  ] ;  then 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  "---------------   macOS support   ---------------" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  "Running openpilot natively on macOS is not officially supported." 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  "It might build, some parts of it might work, but it's not fully tested, so there might be some issues." 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  "Check out devcontainers for a seamless experience (see tools/README.md)." 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  "-------------------------------------------------" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -n "Are you sure you want to continue? [y/N] " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  read  -r response
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  [ [  ! " $response "  = ~ ^( [ yY] [ eE] [ sS] | [ yY] ) +$ ] ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit  1 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fi 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								DIR = " $(  cd  " $(  dirname " ${ BASH_SOURCE [0] } "  ) "  >/dev/null &&  pwd  ) " 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ROOT = " $( cd  $DIR /../ &&  pwd ) " 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								ARCH = $( uname -m) 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  [ [  $SHELL  = =  "/bin/zsh"  ] ] ;  then 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  RC_FILE = " $HOME /.zshrc " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								elif  [ [  $SHELL  = =  "/bin/bash"  ] ] ;  then 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  RC_FILE = " $HOME /.bash_profile " 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								fi 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Install brew if required 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  [ [  $( command  -v brew)  = =  ""  ] ] ;  then 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  echo  "Installing Hombrew" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /bin/bash -c " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh) " 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  echo  " [ ] installed brew t= $SECONDS " 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # make brew available now 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  [ [  $ARCH  = =  "x86_64"  ] ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  'eval "$(/usr/local/homebrew/bin/brew shellenv)"'  >> $RC_FILE 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      eval  " $( /usr/local/homebrew/bin/brew shellenv) " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  'eval "$(/opt/homebrew/bin/brew shellenv)"'  >> $RC_FILE 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      eval  " $( /opt/homebrew/bin/brew shellenv) " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								fi 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew bundle --file= - <<-EOS
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew "catch2" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew "cmake" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew "cppcheck" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew "git-lfs" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew "zlib" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								brew "bzip2" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew "capnp" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								brew "coreutils" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								brew "eigen" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								brew "ffmpeg" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								brew "glfw" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								brew "libarchive" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								brew "libusb" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								brew "libtool" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								brew "llvm" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew "openssl@3.0" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew "pyenv" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew "pyenv-virtualenv" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew "qt@5" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew "zeromq" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew "gcc@13" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								cask "gcc-arm-embedded" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								brew "portaudio" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								EOS
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								echo  " [ ] finished brew install t= $SECONDS " 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								BREW_PREFIX = $( brew --prefix) 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# archive backend tools for pip dependencies 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  LDFLAGS = " $LDFLAGS  -L ${ BREW_PREFIX } /opt/zlib/lib " 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  LDFLAGS = " $LDFLAGS  -L ${ BREW_PREFIX } /opt/bzip2/lib " 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  CPPFLAGS = " $CPPFLAGS  -I ${ BREW_PREFIX } /opt/zlib/include " 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  CPPFLAGS = " $CPPFLAGS  -I ${ BREW_PREFIX } /opt/bzip2/include " 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								# pycurl curl/openssl backend dependencies 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  LDFLAGS = " $LDFLAGS  -L ${ BREW_PREFIX } /opt/openssl@3/lib " 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  CPPFLAGS = " $CPPFLAGS  -I ${ BREW_PREFIX } /opt/openssl@3/include " 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  PYCURL_CURL_CONFIG = /usr/bin/curl-config
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  PYCURL_SSL_LIBRARY = openssl
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								# install python dependencies 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								$DIR /install_python_dependencies.sh
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								echo  " [ ] installed python dependencies t= $SECONDS " 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								# brew does not link qt5 by default 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# check if qt5 can be linked, if not, prompt the user to link it 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								QT_BIN_LOCATION = " $( command  -v lupdate ||  :) " 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  [  -n " $QT_BIN_LOCATION "  ] ;  then 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # if qt6 is linked, prompt the user to unlink it and link the right version 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  QT_BIN_VERSION = " $( lupdate -version |  awk '{print $NF}' ) " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  [ [  ! " $QT_BIN_VERSION "  = ~ 5\. [ 0-9] +\. [ 0-9] + ] ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  " lupdate/lrelease available at PATH is  $QT_BIN_VERSION " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [ [  " $QT_BIN_LOCATION "  = =  " $( brew --prefix) / " * ] ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  "Run the following command to link qt5:" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  "brew unlink qt@6 && brew link qt@5" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  "Remove conflicting qt entries from PATH and run the following command to link qt5:" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  "brew link qt@5" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								else 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  brew link qt@5
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fi 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								echo 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								echo  "----   OPENPILOT SETUP DONE   ----" 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								echo  "Open a new shell or configure your active shell env by running:" 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								echo  " source  $RC_FILE "