Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ngscopeclient/scopehal-docs
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 1faf20b5a349
Choose a base ref
...
head repository: ngscopeclient/scopehal-docs
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 4251ebf8d3dd
Choose a head ref
  • 3 commits
  • 1 file changed
  • 2 contributors

Commits on Jun 22, 2020

  1. Copy the full SHA
    7489b67 View commit details
  2. Removed temporary files

    nshcat committed Jun 22, 2020
    Copy the full SHA
    c433ddc View commit details
  3. Merge pull request #9 from nshcat/win32-building

    Win32 building
    azonenberg authored Jun 22, 2020
    Copy the full SHA
    4251ebf View commit details
Showing with 84 additions and 7 deletions.
  1. +84 −7 section-gettingstarted.tex
91 changes: 84 additions & 7 deletions section-gettingstarted.tex
Original file line number Diff line number Diff line change
@@ -18,10 +18,7 @@ \subsection{Documentation Conventions}

\subsection{Host System Requirements}

All current development is performed on Linux operating systems (primarily Debian and Arch). While use of
cross-platform APIs is encouraged and the UI toolkit (gtkmm) is portable, there are a handful of underlying POSIX-isms
that will need to be wrapped in order to support Windows or OSX.

All current development is performed on Linux operating systems (primarily Debian and Arch), although experimental (and incomplete) Windows support is provided.
glscopeclient uses gtkmm as the UI toolkit. Current development mostly uses 3.24 but any recent 3.x version should work.

Any 64-bit ARM or Intel processor should be able to run glscopeclient. TODO: suggested minimum performance depending on
@@ -46,13 +43,16 @@ \subsection{Instrument Support}

\subsection{Compilation}

glscopeclient can be compiled on both Linux and Windows, but the specific steps that have to be taken differ quite a lot between these the two.

\subsubsection{Linux}
\begin{enumerate}

\item Install dependencies. On Debian/Ubuntu:
\begin{lstlisting}[language=sh]
sudo apt install build-essential cmake pkg-config libglm-dev \
libgtkmm-3.0-dev libsigc++-2.0-dev libyaml-cpp-dev \
liblxi-dev texlive texlive-fonts-extra
liblxi-dev texlive texlive-fonts-extra libglew-dev
\end{lstlisting}

\item Install FFTS library
@@ -62,7 +62,7 @@ \subsection{Compilation}
mkdir build
cd build
cmake ../
make
make -j
sudo make install
\end{lstlisting}

@@ -73,14 +73,91 @@ \subsection{Compilation}
mkdir build
cd build
cmake ../
make
make -j
\end{lstlisting}

\item Install scopehal and scopehal-apps: right now, you don't. As of now, glscopeclient is intended to be run from the
glscopeclient source directory (src/glscopeclient). Anybody want to contribute and set up a proper install process?

\end{enumerate}

\subsubsection{Windows}

On Windows, me make use of the MSYS2 development environment, which gives us access to the MingGW-w64 toolchain. Since this toolchain allows glscopeclient to be compiled as a native Windows application, MSYS2 is only needed to actually compile the project, not to run it.

\begin{enumerate}

\item Download and install MSYS2. You can download it here: \url{https://www.msys2.org/}\\
It is of utmost importance that \textbf{all} steps outlined on the website are followed precisely, even if they might seem unnecessary. This will avoid lots of hard to diagnose problems later on in the build.\\

All following steps are to be done in a MinGW64 shell (\textbf{not} in a MSYS shell, which also gets installed by the MSYS2 installer).

\item Install build tools
\begin{lstlisting}[language=sh]
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake \
mingw-w64-x86_64-make
\end{lstlisting}

\item Install dependencies
\begin{lstlisting}[language=sh]
pacman -S mingw-w64-x86_64-glm mingw-w64-x86_64-libsigc++ \
mingw-w64-x86_64-gtkmm3 mingw-w64-x86_64-yaml-cpp \
mingw-w64-x86_64-glew
\end{lstlisting}

\item Build FFTS library
\begin{lstlisting}[language=sh]
git clone https://github.com/anthonix/ffts.git
cd ffts
mkdir build
cd build
cmake -G"MinGW Makefiles" ../
mingw32-make -j
cp ./libffts_static.a /mingw64/lib/
cp ./../include/ffts.h /mingw64/include/
\end{lstlisting}

\item Build scopehal and scopehal-apps
\begin{lstlisting}[language=sh]
git clone https://github.com/azonenberg/scopehal-cmake.git --recurse-submodules
cd scopehal-cmake
mkdir build
cd build
cmake -G"MinGW Makefiles" -DLIBFFTS_INCLUDE_DIR=/mingw64/include/ \
-DLIBFFTS_LIBRARIES=/mingw64/lib/libffts_static.a ./..
mingw32-make -j
\end{lstlisting}

\item Copying binaries and running glscopeclient \\
Since glscopeclient is built using the MinGW toolchain, it depends on a rather large number of dynamic libraries. Since the application cannot find these libraries when being run from the build directory, there are two ways to make glscopeclient runnable: ``packaging'' the application by collecting all the depedencies, and installing it into the MinGW64 virtual file system.

\begin{enumerate}
\item Installing glscopeclient into the virtual filesystem
\begin{lstlisting}[language=sh]
cp ./src/glscopeclient/glscopeclient.exe /mingw64/bin/
cp -r ./src/glscopeclient/shaders /mingw64/bin/
cp -r ./src/glscopeclient/styles /mingw64/bin/
cp -r ./src/glscopeclient/gradients /mingw64/bin/
cp ./lib/graphwidget/libgraphwidget.dll /mingw64/bin/
cp ./lib/log/liblog.dll /mingw64/bin/
cp ./lib/scopehal/libscopehal.dll /mingw64/bin/
cp ./lib/scopeprotocols/libscopeprotocols.dll /mingw64/bin/
\end{lstlisting}
\vspace{0.5cm}
The application can now be started from any MinGW64 terminal session:
\vspace{0.5cm}
\begin{lstlisting}[language=sh]
glscopeclient.exe
\end{lstlisting}
\vspace{0.5cm}

\item Packaging glscopeclient and its depedencies
This approach is not officially supported yet.
\end{enumerate}

\end{enumerate}


\subsection{Running glscopeclient}

When running glscopeclient with no arguments, a dialog box (Fig. \ref{connection-dialog}) is displayed allowing you to