2024-05-27 10:15:02 +00:00
# Building Subsurface from Source
2013-10-09 01:29:04 +00:00
2015-09-03 01:33:39 +00:00
Subsurface uses quite a few open source libraries and frameworks to do its
2017-09-02 11:40:58 +00:00
job. The most important ones include libdivecomputer, Qt, libxml2, libxslt,
2020-10-25 21:22:36 +00:00
libsqlite3, libzip, and libgit2.
2013-12-12 16:10:49 +00:00
2018-04-23 08:13:47 +00:00
Below are instructions for building Subsurface
- on some popular Linux distributions,
- MacOSX,
- Windows (cross-building)
- Android (cross-building)
- iOS (cross-building)
2013-12-12 16:10:49 +00:00
2014-12-14 21:11:37 +00:00
2024-05-27 10:15:02 +00:00
## Getting Subsurface source
2018-04-21 14:23:03 +00:00
2018-04-23 08:13:47 +00:00
You can get the sources to the latest development version from our git
2018-04-23 11:16:46 +00:00
repository:
2024-05-27 10:15:02 +00:00
```
git clone http://github.com/Subsurface/subsurface.git
cd subsurface
git submodule init # this will give you our flavor of libdivecomputer
```
2018-04-23 11:16:46 +00:00
You keep it updated by doing:
2024-05-27 10:15:02 +00:00
```
git checkout master
git pull -r
git submodule update
```
2022-04-27 04:20:06 +00:00
2018-04-23 08:13:47 +00:00
2024-05-27 10:15:02 +00:00
### Our flavor of libdivecomputer
2018-04-23 08:13:47 +00:00
2020-12-29 20:37:47 +00:00
Subsurface requires its own flavor of libdivecomputer which is inclduded
above as git submodule
2018-04-23 08:13:47 +00:00
The branches won't have a pretty history and will include ugly merges,
but they should always allow a fast forward pull that tracks what we
believe developers should build against. All our patches are contained
2024-05-27 10:15:02 +00:00
in the `Subsurface-DS9` branch.
2018-04-23 08:13:47 +00:00
This should allow distros to see which patches we have applied on top of
2015-08-26 18:44:56 +00:00
upstream. They will receive force pushes as we rebase to newer versions of
upstream so they are not ideal for ongoing development (but they are of
course easy to use for distributions as they always build "from scratch",
anyway).
2018-04-23 08:13:47 +00:00
The rationale for this is that we have no intention of forking the
project. We simply are adding a few patches on top of their latest
version and want to do so in a manner that is both easy for our
2015-08-26 18:44:56 +00:00
developers who try to keep them updated frequently, and anyone packaging
Subsurface or trying to understand what we have done relative to their
respective upstreams.
2014-12-14 21:11:37 +00:00
2015-09-03 01:33:39 +00:00
2024-05-27 10:15:02 +00:00
### Getting Qt5
2018-04-23 08:13:47 +00:00
2019-11-12 15:21:17 +00:00
We use Qt5 in order to only maintain one UI across platforms.
2019-11-14 12:29:35 +00:00
Qt5.9.1 is the oldest version supported if ONLY building Subsurface
Qt5.12 is the oldest version supported if also building Subsurface-mobile
2018-04-23 08:13:47 +00:00
2020-12-29 20:37:47 +00:00
Most Linux distributions include a new enough version of Qt (and if you are on
a distro that still ships with an older Qt, likely your C compiler is also not
new enough to build Subsurface).
If you need Qt (likely on macOS) or want a newer version than provided by your
Linux distro, you can install a separate version that Subsurface will use.
As of Qt5.15 it has become a lot harder to download and install Qt - you
now need a Qt account and the installer tool has a new space age look and
significantly reduced flexibility.
As of this writing, there is thankfully a thirdparty offline installer still
available:
2024-05-27 10:15:02 +00:00
```
pip3 install aqtinstall
aqt install -O < Qt Location > 5.15.2 mac desktop
```
2020-12-29 20:37:47 +00:00
(or whatever version / OS you need). This installer is surprisingly fast
and seems well maintained - note that we don't use this for Windows as
that is completely built from source using MXE.
In order to use this Qt installation, simply add it to your PATH:
2024-05-27 10:15:02 +00:00
```
2020-12-29 20:37:47 +00:00
PATH=< Qt Location > /< version > /< type > /bin:$PATH
2024-05-27 10:15:02 +00:00
```
2018-04-23 08:13:47 +00:00
2018-04-23 11:16:46 +00:00
QtWebKit is needed, if you want to print, but no longer part of Qt5,
2018-04-23 14:54:12 +00:00
so you need to download it and compile. In case you just want to test
without print possibility omit this step.
2018-04-23 08:13:47 +00:00
2024-05-27 10:15:02 +00:00
```
git clone -b 5.212 https://github.com/qt/qtwebkit
mkdir -p qtwebkit/WebKitBuild/Release
cd qtwebkit/WebKitBuild/Release
cmake -DPORT=Qt -DCMAKE_BUILD_TYPE=Release -DQt5_DIR=/< Qt Location > /< version > /< type > /lib/cmake/Qt5 ../..
make install
```
2020-12-29 20:37:47 +00:00
2018-04-23 08:13:47 +00:00
2024-05-27 10:15:02 +00:00
### Other third party library dependencies
2018-04-23 08:13:47 +00:00
In order for our cloud storage to be fully functional you need
2020-04-09 23:59:12 +00:00
libgit2 0.26 or newer.
2015-09-03 01:33:39 +00:00
2018-04-23 08:13:47 +00:00
2024-05-27 10:15:02 +00:00
### cmake build system
2018-04-23 08:13:47 +00:00
2018-04-23 16:01:30 +00:00
Our main build system is based on cmake. But qmake is needed
for the googlemaps plugin and the iOS build.
2018-04-23 08:13:47 +00:00
Download from https://cmake.org/download and follow the instructions
to install it or alternatively follow the instruction specific to a
distribution (see build instructions).
2015-04-09 22:46:25 +00:00
2024-05-27 10:15:02 +00:00
## Build options for Subsurface
2013-12-12 16:10:49 +00:00
2018-04-23 11:16:46 +00:00
The following options are recognised when passed to cmake:
2015-04-09 22:46:25 +00:00
2024-05-27 10:15:02 +00:00
`-DCMAKE_BUILD_TYPE=Release` create a release build
`-DCMAKE_BUILD_TYPE=Debug` create a debug build
2015-04-09 22:46:25 +00:00
The Makefile that was created using cmake can be forced into a much more
verbose mode by calling
2013-12-12 16:10:49 +00:00
2024-05-27 10:15:02 +00:00
```
make VERBOSE=1
```
2013-12-12 16:10:49 +00:00
2018-04-23 08:13:47 +00:00
Many more variables are supported, the easiest way to interact with them is
2015-09-03 01:33:39 +00:00
to call
2024-05-27 10:15:02 +00:00
```
ccmake .
```
2015-09-03 01:33:39 +00:00
in your build directory.
2024-05-27 10:15:02 +00:00
### Building the development version of Subsurface under Linux
2013-10-09 01:29:04 +00:00
2014-12-14 21:11:37 +00:00
On Fedora you need
2024-05-27 10:15:02 +00:00
```
2020-09-27 19:10:28 +00:00
sudo dnf install autoconf automake bluez-libs-devel cmake gcc-c++ git \
2024-05-27 10:15:02 +00:00
libcurl-devel libsqlite3x-devel libssh2-devel libtool libudev-devel \
libusbx-devel libxml2-devel libxslt-devel make \
qt5-qtbase-devel qt5-qtconnectivity-devel qt5-qtdeclarative-devel \
qt5-qtlocation-devel qt5-qtscript-devel qt5-qtsvg-devel \
qt5-qttools-devel qt5-qtwebkit-devel redhat-rpm-config \
bluez-libs-devel libgit2-devel libzip-devel libmtp-devel
```
2015-06-11 09:02:22 +00:00
2014-12-14 21:11:37 +00:00
2014-12-15 22:53:04 +00:00
Package names are sadly different on OpenSUSE
2024-05-27 10:15:02 +00:00
```
2014-12-15 22:53:04 +00:00
sudo zypper install git gcc-c++ make autoconf automake libtool cmake libzip-devel \
2024-05-27 10:15:02 +00:00
libxml2-devel libxslt-devel sqlite3-devel libusb-1_0-devel \
libqt5-linguist-devel libqt5-qttools-devel libQt5WebKitWidgets-devel \
libqt5-qtbase-devel libQt5WebKit5-devel libqt5-qtsvg-devel \
libqt5-qtscript-devel libqt5-qtdeclarative-devel \
libqt5-qtconnectivity-devel libqt5-qtlocation-devel libcurl-devel \
bluez-devel libgit2-devel libmtp-devel
```
2014-12-15 22:53:04 +00:00
2023-12-03 04:44:56 +00:00
On Debian Bookworm this seems to work
2014-12-15 22:53:04 +00:00
2024-05-27 10:15:02 +00:00
```
2018-05-02 04:52:58 +00:00
sudo apt install \
2024-05-27 10:15:02 +00:00
autoconf automake cmake g++ git libbluetooth-dev libcrypto++-dev \
libcurl4-openssl-dev libgit2-dev libqt5qml5 libqt5quick5 libqt5svg5-dev \
libqt5webkit5-dev libsqlite3-dev libssh2-1-dev libssl-dev libtool \
libusb-1.0-0-dev libxml2-dev libxslt1-dev libzip-dev make pkg-config \
qml-module-qtlocation qml-module-qtpositioning qml-module-qtquick2 \
qt5-qmake qtchooser qtconnectivity5-dev qtdeclarative5-dev \
qtdeclarative5-private-dev qtlocation5-dev qtpositioning5-dev \
qtscript5-dev qttools5-dev qttools5-dev-tools libmtp-dev
```
2018-05-02 04:52:58 +00:00
2020-10-11 20:26:39 +00:00
In order to build and run mobile-on-desktop, you also need
2024-05-27 10:15:02 +00:00
```
2020-10-11 20:26:39 +00:00
sudo apt install \
2024-05-27 10:15:02 +00:00
qtquickcontrols2-5-dev qml-module-qtquick-window2 qml-module-qtquick-dialogs \
qml-module-qtquick-layouts qml-module-qtquick-controls2 qml-module-qtquick-templates2 \
qml-module-qtgraphicaleffects qml-module-qtqml-models2 qml-module-qtquick-controls
```
2020-10-11 20:26:39 +00:00
2021-05-30 18:30:35 +00:00
Package names for Ubuntu 21.04
2018-05-02 04:52:58 +00:00
2024-05-27 10:15:02 +00:00
```
2018-05-02 04:52:58 +00:00
sudo apt install \
2024-05-27 10:15:02 +00:00
autoconf automake cmake g++ git libbluetooth-dev libcrypto++-dev \
libcurl4-gnutls-dev libgit2-dev libqt5qml5 libqt5quick5 libqt5svg5-dev \
libqt5webkit5-dev libsqlite3-dev libssh2-1-dev libssl-dev libtool \
libusb-1.0-0-dev libxml2-dev libxslt1-dev libzip-dev make pkg-config \
qml-module-qtlocation qml-module-qtpositioning qml-module-qtquick2 \
qt5-qmake qtchooser qtconnectivity5-dev qtdeclarative5-dev \
qtdeclarative5-private-dev qtlocation5-dev qtpositioning5-dev \
qtscript5-dev qttools5-dev qttools5-dev-tools libmtp-dev
```
2020-10-11 20:26:39 +00:00
In order to build and run mobile-on-desktop, you also need
2024-05-27 10:15:02 +00:00
```
2020-10-11 20:26:39 +00:00
sudo apt install \
2024-05-27 10:15:02 +00:00
qtquickcontrols2-5-dev qml-module-qtquick-window2 qml-module-qtquick-dialogs \
qml-module-qtquick-layouts qml-module-qtquick-controls2 qml-module-qtquick-templates2 \
qml-module-qtgraphicaleffects qml-module-qtqml-models2 qml-module-qtquick-controls
```
2020-10-11 20:26:39 +00:00
2017-02-20 06:19:05 +00:00
2020-09-27 19:10:28 +00:00
On Raspberry Pi (Raspian Buster and Ubuntu Mate 20.04.1) this seems to work
2019-03-05 04:57:13 +00:00
2024-05-27 10:15:02 +00:00
```
2019-03-05 04:57:13 +00:00
sudo apt install \
2024-05-27 10:15:02 +00:00
autoconf automake cmake g++ git libbluetooth-dev libcrypto++-dev \
libcurl4-gnutls-dev libgit2-dev libqt5qml5 libqt5quick5 libqt5svg5-dev \
libqt5webkit5-dev libsqlite3-dev libssh2-1-dev libssl-dev libtool \
libusb-1.0-0-dev libxml2-dev libxslt1-dev libzip-dev make pkg-config \
qml-module-qtlocation qml-module-qtpositioning qml-module-qtquick2 \
qt5-qmake qtchooser qtconnectivity5-dev qtdeclarative5-dev \
qtdeclarative5-private-dev qtlocation5-dev qtpositioning5-dev \
qtscript5-dev qttools5-dev qttools5-dev-tools libmtp-dev
```
2020-10-11 20:26:39 +00:00
In order to build and run mobile-on-desktop, you also need
2024-05-27 10:15:02 +00:00
```
2020-10-11 20:26:39 +00:00
sudo apt install \
2024-05-27 10:15:02 +00:00
qtquickcontrols2-5-dev qml-module-qtquick-window2 qml-module-qtquick-dialogs \
qml-module-qtquick-layouts qml-module-qtquick-controls2 qml-module-qtquick-templates2 \
qml-module-qtgraphicaleffects qml-module-qtqml-models2 qml-module-qtquick-controls
```
2020-10-11 20:26:39 +00:00
2020-09-27 19:10:28 +00:00
Note that on Ubuntu Mate on the Raspberry Pi, you may need to configure
2019-03-05 04:57:13 +00:00
some swap space in order for the build to complete successfully. There is no
swap space configured by default. See the dphys-swapfile package.
2022-09-03 22:38:47 +00:00
On Raspberry Pi OS with Desktop (64-bit) Released April 4th, 2022, this seems
to work
2024-05-27 10:15:02 +00:00
```
2022-09-03 22:38:47 +00:00
sudo apt install \
2024-05-27 10:15:02 +00:00
autoconf automake cmake g++ git libbluetooth-dev libcrypto++-dev \
libcurl4-gnutls-dev libgit2-dev libqt5qml5 libqt5quick5 libqt5svg5-dev \
libqt5webkit5-dev libsqlite3-dev libssh2-1-dev libssl-dev libtool \
libusb-1.0-0-dev libxml2-dev libxslt1-dev libzip-dev make pkg-config \
qml-module-qtlocation qml-module-qtpositioning qml-module-qtquick2 \
qt5-qmake qtchooser qtconnectivity5-dev qtdeclarative5-dev \
qtdeclarative5-private-dev qtlocation5-dev qtpositioning5-dev \
qtscript5-dev qttools5-dev qttools5-dev-tools libmtp-dev
```
2022-09-03 22:38:47 +00:00
Note that you'll need to increase the swap space as the default of 100MB
2022-09-13 03:23:58 +00:00
doesn't seem to be enough. 1024MB worked on a 3B+.
If maps aren't working, copy the googlemaps plugin
2024-05-27 10:15:02 +00:00
from `<build_dir>/subsurface/googlemaps/build/libqtgeoservices_googlemaps.so`
to `/usr/lib/aarch64-linux-gnu/qt5/plugins/geoservices/` .
2022-09-03 22:38:47 +00:00
2024-05-27 10:15:02 +00:00
If Subsurface can't seem to see your dive computer on `/dev/ttyUSB0` , even after
2022-09-13 03:23:58 +00:00
adjusting your account's group settings (see note below about usermod), it
might be that the FTDI driver doesn't recognize the VendorID/ProductID of your
2024-05-27 10:15:02 +00:00
computer. Follow the instructions here:
2022-09-13 03:23:58 +00:00
2024-05-27 10:15:02 +00:00
https://www.ftdichip.com/Support/Documents/TechnicalNotes/TN_101_Customising_FTDI_VID_PID_In_Linux(FT_000081).pdf
2022-09-13 03:23:58 +00:00
If you're unsure of the VID/PID of your device, plug your dive computer in to
2024-05-27 10:15:02 +00:00
your host and run `dmesg` . That should show the codes that are needed to
2022-09-13 03:23:58 +00:00
follow TN_101.
2015-02-18 07:23:22 +00:00
On PCLinuxOS you appear to need the following packages
2024-05-27 10:15:02 +00:00
```
su -c "apt-get install -y autoconf automake cmake gcc-c++ git libtool \
lib64bluez-devel lib64qt5bluetooth-devel lib64qt5concurrent-devel \
lib64qt5help-devel lib64qt5location-devel lib64qt5quicktest-devel \
lib64qt5quickwidgets-devel lib64qt5script-devel lib64qt5svg-devel \
lib64qt5test-devel lib64qt5webkitwidgets-devel lib64qt5xml-devel \
lib64ssh2-devel lib64usb1.0-devel lib64zip-devel qttools5 qttranslations5"
```
2013-10-09 01:29:04 +00:00
2015-02-18 08:17:02 +00:00
In order to build Subsurface, use the supplied build script. This should
2015-07-07 13:14:13 +00:00
work on most systems that have all the prerequisite packages installed.
2015-02-17 21:18:05 +00:00
You should have Subsurface sources checked out in a sane place, something
like this:
2024-05-27 10:15:02 +00:00
```
2015-02-17 21:18:05 +00:00
mkdir -p ~/src
cd ~/src
2020-04-26 23:36:27 +00:00
git clone https://github.com/Subsurface/subsurface.git
2015-02-17 21:18:05 +00:00
./subsurface/scripts/build.sh # < - this step will take quite a while as it
# compiles a handful of libraries before
2024-05-27 10:15:02 +00:00
# building Subsurface
```
2015-02-17 21:18:05 +00:00
Now you can run Subsurface like this:
2024-05-27 10:15:02 +00:00
```
2015-10-15 16:52:51 +00:00
cd ~/src/subsurface/build
2015-10-14 03:05:47 +00:00
./subsurface
2024-05-27 10:15:02 +00:00
```
2015-02-17 21:18:05 +00:00
2013-12-09 19:48:16 +00:00
2015-07-04 16:17:42 +00:00
Note: on many Linux versions (for example on Kubuntu 15.04) the user must
2024-05-27 10:15:02 +00:00
belong to the `dialout` group.
2015-07-04 16:17:42 +00:00
You may need to run something like
2024-05-27 10:15:02 +00:00
```
sudo usermod -a -G dialout $USER
```
2015-07-04 16:17:42 +00:00
with your correct username and log out and log in again for that to take
effect.
2015-07-04 16:00:30 +00:00
If you get errors like:
2024-05-27 10:15:02 +00:00
```
2015-10-14 03:05:47 +00:00
./subsurface: error while loading shared libraries: libGrantlee_Templates.so.5: cannot open shared object file: No such file or directory
2024-05-27 10:15:02 +00:00
```
2015-07-04 16:00:30 +00:00
You can run the following command:
2024-05-27 10:15:02 +00:00
```
2015-07-04 16:17:42 +00:00
sudo ldconfig ~/src/install-root/lib
2024-05-27 10:15:02 +00:00
```
2015-07-04 16:00:30 +00:00
2024-05-27 10:15:02 +00:00
### Building Subsurface under MacOSX
2013-10-09 01:29:04 +00:00
2022-04-27 04:20:06 +00:00
While it is possible to build all required components completely from source,
at this point the preferred way to build Subsurface is to set up the build
infrastructure via Homebrew and then build the dependencies from source.
2013-10-09 01:29:04 +00:00
2024-05-27 10:15:02 +00:00
0. You need to have XCode installed. The first time (and possibly after updating OSX)
2013-10-09 01:29:04 +00:00
2024-05-27 10:15:02 +00:00
```
2022-04-27 04:20:06 +00:00
xcode-select --install
2024-05-27 10:15:02 +00:00
```
2018-04-23 11:16:46 +00:00
2024-05-27 10:15:02 +00:00
1. install Homebrew (see https://brew.sh) and then the required build infrastructure:
2018-04-23 11:16:46 +00:00
2024-05-27 10:15:02 +00:00
```
2022-04-27 04:20:06 +00:00
brew install autoconf automake libtool pkg-config gettext
2024-05-27 10:15:02 +00:00
```
2013-10-09 01:29:04 +00:00
2024-05-27 10:15:02 +00:00
2. install Qt
2013-10-09 01:29:04 +00:00
2022-04-27 04:20:06 +00:00
download the macOS installer from https://download.qt.io/official_releases/online_installers
and use it to install the desired Qt version. At this point the latest Qt5 version is still
preferred over Qt6.
2024-05-27 10:15:02 +00:00
2024-05-06 09:46:36 +00:00
If you plan to deploy your build to an Apple Silicon Mac, you may have better results with
2024-05-27 10:15:02 +00:00
Bluetooth connections if you install Qt5.15.13. If Qt5.15.13 is not available via the
2024-05-06 09:46:36 +00:00
installer, you can download from https://download.qt.io/official_releases/qt/5.15/5.15.13
and build using the usual configure, make, and make install.
2014-12-25 22:44:59 +00:00
2024-05-27 10:15:02 +00:00
3. now build Subsurface
2014-12-25 22:44:59 +00:00
2024-05-27 10:15:02 +00:00
```
2022-04-27 04:20:06 +00:00
cd ~/src; bash subsurface/scripts/build.sh -build-deps
2024-05-27 10:15:02 +00:00
```
2014-12-25 22:44:59 +00:00
2022-04-27 04:20:06 +00:00
if you are building against Qt6 (still experimental) you can create a universal binary with
2014-12-25 22:44:59 +00:00
2024-05-27 10:15:02 +00:00
```
2022-04-27 04:20:06 +00:00
cd ~/src; bash subsurface/scripts/build.sh -build-with-qt6 -build-deps -fat-build
2024-05-27 10:15:02 +00:00
```
2013-10-09 01:29:04 +00:00
2015-04-09 22:46:25 +00:00
After the above is done, Subsurface.app will be available in the
2015-08-17 00:42:55 +00:00
subsurface/build directory. You can run Subsurface with the command
2024-05-27 10:15:02 +00:00
A. `open subsurface/build/Subsurface.app`
2018-04-23 11:16:46 +00:00
this will however not show diagnostic output
2024-05-27 10:15:02 +00:00
B. `subsurface/build/Subsurface.app/Contents/MacOS/Subsurface`
the [Tab] key is your friend :-)
2022-04-27 04:20:06 +00:00
2018-04-23 11:16:46 +00:00
Debugging can be done with either Xcode or QtCreator.
2013-10-09 01:29:04 +00:00
2018-04-23 11:16:46 +00:00
To install the app for all users, move subsurface/build/Subsurface.app to /Applications.
2013-10-09 01:29:04 +00:00
2014-02-26 16:21:13 +00:00
2024-05-27 10:15:02 +00:00
### Cross-building Subsurface on MacOSX for iOS
2018-04-23 08:13:47 +00:00
2024-05-27 10:15:02 +00:00
0. build SubSurface under MacOSX and iOS
2018-04-23 08:13:47 +00:00
2024-05-27 10:15:02 +00:00
1. `cd <repo>/..; bash <repo>/scripts/build.sh -build-deps -both`
2018-05-06 15:59:57 +00:00
note: this is mainly done to ensure all external dependencies are downloaded and set
to the correct versions
2024-05-27 10:15:02 +00:00
2. follow [these instructions ](packaging/ios/README.md )
2018-04-23 08:13:47 +00:00
2024-05-27 10:15:02 +00:00
### Cross-building Subsurface on Linux for Windows
2013-10-09 01:29:04 +00:00
2024-05-27 10:15:02 +00:00
Subsurface for Windows builds on linux by using the [MXE (M cross environment) ](https://github.com/mxe/mxe ). The easiest way to do this is to use a Docker container with a pre-built MXE for Subsurface by following [these instructions ](packaging/windows/README.md ).
2013-10-09 01:29:04 +00:00
2024-05-27 10:15:02 +00:00
### Building Subsurface on Windows
2013-10-09 01:29:04 +00:00
2014-12-16 02:19:21 +00:00
This is NOT RECOMMENDED. To the best of our knowledge there is one single
2015-02-12 00:38:08 +00:00
person who regularly does this. The Subsurface team does not provide support
2015-10-14 03:05:47 +00:00
for Windows binary build from sources natively under Windows...
2018-04-23 08:13:47 +00:00
The lack of a working package management system for Windows makes it
2018-04-23 11:16:46 +00:00
really painful to build Subsurface natively under Windows,
2018-04-23 08:13:47 +00:00
so we don't support that at all.
2015-08-18 07:06:37 +00:00
2024-05-27 10:15:02 +00:00
But if you want to build Subsurface on a Windows system, the docker based [cross-build for Windows ](packaging/windows/README.md ) works just fine in WSL2 on Windows.
2018-04-23 08:13:47 +00:00
2024-05-27 10:15:02 +00:00
### Cross-building Subsurface on Linux for Android
2015-08-18 07:06:37 +00:00
2024-05-27 10:15:02 +00:00
Follow [these instructions ](packaging/android/README.md ).