You've already forked OpenUxAS-SoI
mirror of
https://github.com/AdaCore/OpenUxAS-SoI.git
synced 2026-02-12 13:04:49 -08:00
506 lines
12 KiB
TeX
506 lines
12 KiB
TeX
\section{Dependencies}\label{dependencies}
|
|
|
|
The primary tools and dependencies to obtain, build, document, and
|
|
simulate UxAS are:
|
|
|
|
\begin{itemize}
|
|
\item
|
|
Git
|
|
\item
|
|
OpenGL
|
|
\item
|
|
UUID library
|
|
\item
|
|
Boost
|
|
\item
|
|
Python 3
|
|
\item
|
|
Meson
|
|
\item
|
|
Ninja
|
|
\item
|
|
LmcpGen
|
|
\item
|
|
OpenAMASE (optional, simulation)
|
|
\item
|
|
NetBeans with Java JDK (optional, simulation)
|
|
\item
|
|
Doxygen (optional, documentation)
|
|
\item
|
|
LaTeX (optional, documentation)
|
|
\end{itemize}
|
|
|
|
The UxAS build system will download and compile the following external
|
|
libraries
|
|
|
|
\begin{itemize}
|
|
\item
|
|
Google Test (gTest)
|
|
\item
|
|
ZeroMQ (zeromq, czmq, cppzmq, zyre)
|
|
\item
|
|
SQLite
|
|
\item
|
|
Zlib
|
|
\item
|
|
Minizip
|
|
\item
|
|
Serial
|
|
\end{itemize}
|
|
|
|
Libraries for XML and GPS message parsing have numerous forks without
|
|
centralized repository control. Code to build the following libraries is
|
|
included with UxAS.
|
|
|
|
\begin{itemize}
|
|
\item
|
|
PugiXML
|
|
\item
|
|
TinyGPS
|
|
\end{itemize}
|
|
|
|
\section{Supported platforms}\label{supported-platforms}
|
|
|
|
For an Ubuntu 16.04 or Mac OS X system with the listed prerequisite
|
|
tools installed, UxAS should build from source without issue. Support
|
|
for Windows is available on Windows 7 and 10 using Visual Studio.
|
|
|
|
\subsection{Installing Prerequisite Tools on Ubuntu Linux -or- Mac OS X
|
|
(Partially-Automated)}\label{installing-prerequisite-tools-on-ubuntu-linux--or--mac-os-x-partially-automated}
|
|
|
|
The following is a bash script that helps to partially-automation the
|
|
``installing prerequisite tools'' processes that are documented in this
|
|
README.md file below.
|
|
|
|
This has been tested-working on Ubuntu 16.04, as of 2017-05-23
|
|
|
|
\begin{enumerate}
|
|
\def\labelenumi{\arabic{enumi}.}
|
|
\item
|
|
Download the script from the OpenUxAS repository
|
|
(install\_most\_deps.sh) OR cd to your git clone d OpenUxAS directory
|
|
\item
|
|
Run the script at the terminal: ./install\_most\_deps.sh
|
|
\item
|
|
Follow the on-screen instructions
|
|
\end{enumerate}
|
|
|
|
Note that the most up-to-date instructions on the dependencies-needed
|
|
for UxAS are available below.
|
|
|
|
\subsection{Installing Prerequisite Tools on Ubuntu
|
|
Linux}\label{installing-prerequisite-tools-on-ubuntu-linux}
|
|
|
|
\begin{enumerate}
|
|
\def\labelenumi{\arabic{enumi}.}
|
|
\item
|
|
Install git: in terminal
|
|
|
|
\begin{itemize}
|
|
\item
|
|
sudo apt-get install git
|
|
\item
|
|
sudo apt-get install gitk
|
|
\end{itemize}
|
|
\item
|
|
Install OpenGL development headers: in terminal
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
sudo apt-get install libglu1-mesa-dev
|
|
\end{itemize}
|
|
\item
|
|
Install unique ID creation library: in terminal
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
sudo apt-get install uuid-dev
|
|
\end{itemize}
|
|
\item
|
|
Install Boostlibraries (\textbf{optional but recommended}; see
|
|
external dependencies section): in terminal
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
sudo apt-get install libboost-filesystem-dev libboost-regex-dev
|
|
libboost-system-dev
|
|
\end{itemize}
|
|
\item
|
|
Install doxygen and related packages \textbf{optional}: in terminal
|
|
|
|
\begin{itemize}
|
|
\item
|
|
sudo apt-get install doxygen
|
|
\item
|
|
sudo apt-get install graphviz
|
|
\item
|
|
sudo apt-get install texlive
|
|
\item
|
|
sudo apt-get install texlive-latex-extra
|
|
\end{itemize}
|
|
\item
|
|
Install pip3: in terminal
|
|
|
|
\begin{itemize}
|
|
\item
|
|
sudo apt install python3-pip
|
|
\item
|
|
sudo -H pip3 install --upgrade pip
|
|
\end{itemize}
|
|
\item
|
|
Install ninja build system: in terminal
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
sudo -H pip3 install ninja
|
|
\end{itemize}
|
|
\item
|
|
Install meson build configuration: in terminal
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
sudo -H pip3 install meson
|
|
\end{itemize}
|
|
\item
|
|
Ensure dependency search for meson is supported: in terminal
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
sudo apt-get install pkg-config
|
|
\end{itemize}
|
|
\item
|
|
Install python plotting capabilities (\textbf{optional}): in terminal
|
|
|
|
\begin{itemize}
|
|
\item
|
|
sudo apt install python3-tk
|
|
\item
|
|
sudo -H pip3 install matplotlib
|
|
\item
|
|
sudo -H pip3 install pandas
|
|
\end{itemize}
|
|
\item
|
|
Install NetBeans and Oracle Java JDK (\textbf{optional})
|
|
|
|
\begin{itemize}
|
|
\item
|
|
Download the Linux x64 version
|
|
\item
|
|
Run downloaded install script. In terminal: cd ~Downloads; sh
|
|
jdk-9u131-nb-8\_w-linux-x64.sh
|
|
\item
|
|
Click Next three times, then Install
|
|
\end{itemize}
|
|
\item
|
|
Enable C/C++ plug-in in NetBeans (\textbf{optional})
|
|
|
|
\begin{itemize}
|
|
\item
|
|
Open NetBeans (in Ubuntu search, type NetBeans)
|
|
\item
|
|
Choose Tools-\textgreater{}Plugins from the top menu
|
|
\item
|
|
In the Available Plugins tab, search for C++
|
|
\item
|
|
Select C/C++ and click Install
|
|
\end{itemize}
|
|
\item
|
|
Install Oracle Java run-time (required from LmcpGen): in terminal
|
|
|
|
\begin{itemize}
|
|
\item
|
|
sudo add-apt-repository ppa:webupd8team/java
|
|
\item
|
|
sudo apt update; sudo apt install oracle-java8-installer
|
|
\item
|
|
sudo apt install oracle-java8-set-default
|
|
\end{itemize}
|
|
\end{enumerate}
|
|
|
|
\subsection{Installing Prerequisites on Mac OS
|
|
X}\label{installing-prerequisites-on-mac-os-x}
|
|
|
|
\begin{enumerate}
|
|
\def\labelenumi{\arabic{enumi}.}
|
|
\item
|
|
Install XCode
|
|
\item
|
|
Enable commandline tools. In terminal: xcode-select --install
|
|
\item
|
|
Install homebrew (must be administrator). In terminal: sudo ruby -e
|
|
``\$(curl5 -fsSL
|
|
https://raw.githubusercontent.com/Homebrew/install/master/install)''
|
|
\item
|
|
Add homebrew to path. In terminal: echo \$(export
|
|
Path=``/usr/local/bin:\$PATH'') \textgreater{}\textgreater{}
|
|
~/.bash\_profile
|
|
\item
|
|
Install git. In termin0al: brew install git
|
|
\item
|
|
Install unique ID library. In terminal: brew install ossp-uuid
|
|
\item
|
|
Install Boost library and configure it in a fresh shell. In terminal:
|
|
|
|
\begin{itemize}
|
|
\item
|
|
brew install boost
|
|
\item
|
|
echo 'export BOOST\_ROOT=/usr/local' \textgreater{}\textgreater{}
|
|
~/.bash\_profile
|
|
\item
|
|
bash
|
|
\end{itemize}
|
|
\item
|
|
Install doxygen and related packages (\textbf{optional}). In terminal:
|
|
|
|
\begin{itemize}
|
|
\item
|
|
brew install doxygen
|
|
\item
|
|
brew install graphviz
|
|
\item
|
|
brew cask install mactex
|
|
\end{itemize}
|
|
\item
|
|
Install pip3. In terminal:
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
brew install python3
|
|
\end{itemize}
|
|
\item
|
|
Install nonja build system. In terminal:
|
|
|
|
\begin{itemize}
|
|
\item
|
|
brew install cmake
|
|
\item
|
|
brew install pkg-config
|
|
\item
|
|
sudo -H pip3 install scikit-build
|
|
\item
|
|
sudo -H pip3 install ninja
|
|
\end{itemize}
|
|
\item
|
|
Install meson build configuration. In terminal:
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
sudo -H pip3 install meson
|
|
\end{itemize}
|
|
\item
|
|
Install python plotting capabilities (\textbf{optional}). In terminal:
|
|
|
|
\begin{itemize}
|
|
\item
|
|
sudo -H pip3 install matplotlib
|
|
\item
|
|
sudo -H pip3 install pandas
|
|
\end{itemize}
|
|
\item
|
|
Install Oracle Java run-time(required for LmcpGen)
|
|
\item
|
|
Install NetBeans and Oracle JAva JDK (\textbf{optional})
|
|
|
|
\begin{itemize}
|
|
\item
|
|
Download the Mac OSX version
|
|
\item
|
|
Install .dmg
|
|
\end{itemize}
|
|
\item
|
|
Enable C++ plug-in in NetBeans (\textbf{optional})
|
|
|
|
\begin{itemize}
|
|
\item
|
|
Open NetBeans
|
|
\item
|
|
Choose Tools-\textgreater{}Plugins from the top menu
|
|
\item
|
|
In the Available Plugins tab, search for C++
|
|
\item
|
|
Select C/C++ and click Install
|
|
\end{itemize}
|
|
\end{enumerate}
|
|
|
|
\subsection{Prep and Build on Native
|
|
Windows}\label{prep-and-build-on-native-windows}
|
|
|
|
\begin{enumerate}
|
|
\def\labelenumi{\arabic{enumi}.}
|
|
\item
|
|
Install \href{https://www.visualstudio.com/downloads/}{Visual Studio
|
|
2017 Community Edition}
|
|
|
|
\begin{itemize}
|
|
\item
|
|
Ensure C++ selected in \texttt{Workloads} tab
|
|
\item
|
|
Ensure \texttt{Git\ for\ Windows} is selected in
|
|
\texttt{Individual\ components} tab
|
|
\end{itemize}
|
|
\item
|
|
Install \href{https://git-scm.com/download/win}{Git} with Bash shell
|
|
\item
|
|
Install
|
|
\href{https://www.python.org/ftp/python/3.6.1/python-3.6.1.exe}{Python
|
|
3}
|
|
|
|
\begin{itemize}
|
|
\item
|
|
Make sure to check \texttt{Add\ Python\ 3.6\ to\ PATH}
|
|
\item
|
|
Choose standard install (\texttt{Install\ Now}, requires admin)
|
|
\item
|
|
Verify installation by: \texttt{python\ \ \ \ -\/-version} in
|
|
\texttt{cmd} prompt
|
|
\item
|
|
Verify \emph{pip} is also installed: \texttt{pip\ -\/-version} in
|
|
\texttt{cmd} prompt
|
|
\item
|
|
If unable to get python on path, follow
|
|
\href{https://stackoverflow.com/questions/23400030/windows-7-add-path}{this
|
|
answer} using location
|
|
\texttt{C:\textbackslash{}Users\textbackslash{}{[}user{]}\textbackslash{}AppData\textbackslash{}Local\textbackslash{}Programs\textbackslash{}Python\textbackslash{}Python36-32\textbackslash{}}
|
|
\end{itemize}
|
|
\item
|
|
Install \emph{meson}
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
In \texttt{cmd} prompt \textbf{with admin priviledges}:
|
|
\texttt{pip\ install\ meson}
|
|
\end{itemize}
|
|
\item
|
|
Install
|
|
\href{https://sourceforge.net/projects/boost/files/boost-binaries/1.64.0/boost_1_64_0-msvc-14.1-32.exe/download}{Boost}
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
Note: the above link is for VS2017 pre-compiled libraries. To
|
|
compile from source, you must install at the location:
|
|
\texttt{C:\textbackslash{}local\textbackslash{}boost\_1\_64\_0}
|
|
\end{itemize}
|
|
\item
|
|
Pull UxAS repositories (from Git Bash shell)
|
|
|
|
\begin{itemize}
|
|
\item
|
|
\texttt{git\ -c\ http.sslVerify=false\ clone\ https://github.com/afrl-rq/OpenUxAS.git}
|
|
\item
|
|
\texttt{git\ -c\ http.sslVerify=false\ clone\ https://github.com/afrl-rq/LmcpGen.git}
|
|
\item
|
|
\texttt{git\ -c\ https://github.com/afrl-rq/OpenAMASE.git}
|
|
\end{itemize}
|
|
\item
|
|
Build OpenAMASE
|
|
|
|
\begin{itemize}
|
|
\tightlist
|
|
\item
|
|
Load the OpenAMASE project in NetBeans and click \texttt{Build}
|
|
\end{itemize}
|
|
\item
|
|
Auto-create the UxAS messaging library
|
|
|
|
\begin{itemize}
|
|
\item
|
|
Download released executable from
|
|
\href{https://github.com/afrl-rq/LmcpGen/releases/download/v1.5.0/LmcpGen.jar}{GitHub}
|
|
\item
|
|
Place \texttt{LmcpGen.jar} in \texttt{LmcpGen/dist} folder
|
|
\item
|
|
From the Git Bash shell in the root UxAS directory, run
|
|
\texttt{sh\ RunLmcpGen.sh}
|
|
\item
|
|
Note: For simplicity, make sure the LMCPGen, OpenUxAS, and OpenAMASE
|
|
repositories follow the folder structure labeled in the
|
|
\protect\hyperlink{configure-uxas-and-related-projects}{Configure
|
|
UxAS and Related Projects} section.
|
|
\end{itemize}
|
|
\item
|
|
Prepare build
|
|
|
|
\begin{itemize}
|
|
\item
|
|
Open VS command prompt (Tools -\textgreater{} Visual Studio Command
|
|
Prompt)
|
|
\item
|
|
Note: If the Visual Studio Command Prompt is absent from Visual
|
|
Studio, it is also possible to perform the following actions by
|
|
searching for the \texttt{Developer\ Command\ Prompt\ for\ VS\ 2017}
|
|
application and switching the working directory to the root OpenUxAS
|
|
directory
|
|
\item
|
|
\texttt{python\ prepare}
|
|
\item
|
|
\texttt{meson.py\ build\ -\/-backend=vs} This should create a Visual
|
|
Studio solution in the build folder.
|
|
\end{itemize}
|
|
\item
|
|
Set UxAS as the Startup Project
|
|
|
|
\begin{itemize}
|
|
\item
|
|
Open the OpenUxAS.sln with Visual Studio, right-click the UxAS
|
|
project found in the Solution Explorer
|
|
\item
|
|
Select Set as StartUp Project
|
|
\end{itemize}
|
|
\item
|
|
Add the boost library to the Library Directories for the dependent
|
|
projects
|
|
|
|
\begin{itemize}
|
|
\item
|
|
With the OpenUxAS solution open in Visaul Studio, right-click the
|
|
uxas project from the Solution Explorer and select
|
|
\texttt{Properties} from the context menu.
|
|
\item
|
|
Select \texttt{VC++\ Directories} located within the
|
|
\texttt{Configuration\ Properties} node in the
|
|
\texttt{uxas\ Properties\ Pages} Pop Up
|
|
\item
|
|
In under the general tab, there will be a
|
|
\texttt{Library\ Directories} option. Add the absolute path of the
|
|
boost libraries here. Given boost was setup with the instruction
|
|
above, this path should be
|
|
\texttt{C:\textbackslash{}local\textbackslash{}boost\_1\_64\_0\textbackslash{}lib32-msvc-14.1}
|
|
\end{itemize}
|
|
\item
|
|
Build project with Visual Studio
|
|
|
|
\begin{itemize}
|
|
\item
|
|
Open project file \texttt{OpenUxAS.sln} in the
|
|
\texttt{OpenUxAS/build} directory
|
|
\item
|
|
In the \texttt{Solution\ Explorer}, right-click the \texttt{uxas}
|
|
project, and select \texttt{Build} from the context menu
|
|
\end{itemize}
|
|
\end{enumerate}
|
|
|
|
\paragraph{Caveats}\label{caveats}
|
|
|
|
\begin{itemize}
|
|
\item
|
|
The Visual Studio backend for Meson mostly works, but will fail when
|
|
regenerating build files. If you modify one of the
|
|
\texttt{meson.build} files, delete the \texttt{build} directory and
|
|
run \texttt{meson.py\ build\ -\/-backend=vs} again. The steps
|
|
following the \texttt{meson.build} command must also be performed.
|
|
\item
|
|
The UxAS test suite uses some hardcoded POSIX-style paths, and so does
|
|
not currently work on Windows.
|
|
\end{itemize}
|