Skip to content

Commit

Permalink
Add generated sources
Browse files Browse the repository at this point in the history
  • Loading branch information
Stefan Kebekus committed Mar 1, 2020
1 parent ac3bec9 commit 464df9c
Show file tree
Hide file tree
Showing 36 changed files with 4,915 additions and 12 deletions.
58 changes: 46 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,36 @@
# enroute flight navigation

**enroute flight navigation** is a mobile flight navigation app for Android and other devices. The app is free, open source and 100% non-commercial. We do not collect user data. **enroute flight navigation** is a project of [Akaflieg Freiburg](https://akaflieg-freiburg.de), a flight club based in Freiburg, Germany. You can find more information on the [homepage](https://akaflieg-freiburg.github.io/enroute).
**enroute flight navigation** is a mobile flight navigation app for Android and
other devices. The app is free, open source and 100% non-commercial. We do not
collect user data. **enroute flight navigation** is a project of [Akaflieg
Freiburg](https://akaflieg-freiburg.de), a flight club based in Freiburg,
Germany. You can find more information on the
[homepage](https://akaflieg-freiburg.github.io/enroute).

## 1. Compilation

**enroute flight navigation** is a fairly large, but fairly standard Qt application that can be build on a standard Linux system. The build relies on **cmake**. The author uses Fedora Linux. Builds on Windows or MacOS hosts has never been attempted.
**enroute flight navigation** is a fairly large, but fairly standard Qt
application that can be build on a standard Linux system. The build relies on
**cmake**. The author uses Fedora Linux. Builds on Windows or MacOS hosts has
never been attempted.

The CMake scripts download substantial amounts of data during the build process.
The GIT repository includes the following submodules, which are all tied in in
3rdParty.

* Google's Material Design Icon set

* Google's Roboto Fonts

* Nitroshare's QHTTPEngine

* For Android only: precompiled version of the openSSL libraries for various architectures.
* For Android only: precompiled version of the openSSL libraries for various
architectures.

### 1.1 Building a desktop app

On a standard Linux system, the following commands will build a desktop version of the app. The commands produce a single binary at **./src/enroute** that links to Qt dynamically, but contains all the data required to run.
On a standard Linux system, the following commands will build a desktop version
of the app. The commands produce a single binary at **./src/enroute** that links
to Qt dynamically, but contains all the data required to run.

```shell
# Create build directory
Expand All @@ -35,7 +47,9 @@ make -j5
./src/enroute
```

We include a script, **buildscript-linux-debug.sh** that will build a debug binary of **enroute** with LLVM's address-sanitizer and undefined-sanitizer included. The CLANG compiler set must be available.
We include a script, **buildscript-linux-debug.sh** that will build a debug
binary of **enroute** with LLVM's address-sanitizer and undefined-sanitizer
included. The CLANG compiler set must be available.

```shell
# Go to the main 'enroute' directory
Expand All @@ -55,24 +69,44 @@ The author uses Qt Creator to build Android apps.

### 1.3 Dependencies

* **Qt development libraries**, version ≥ 5.12 for the desktop app and version ≥ 5.14 for the Android app.
* **Qt development libraries**, version ≥ 5.12 for the desktop app and version ≥
5.14 for the Android app.

* **CMake**, version ≥ 3.13 for the desktop app and version ≥ 3.15 for the Android app.
* **CMake**, version ≥ 3.13 for the desktop app and version ≥ 3.15 for the
Android app.

* Command line utilities: **curl**, **git**, **tar** (used to download data at configuration stage), **Doxygen**, **dot** (to build documentation,) **inkscape** (used to generate PNG versions of icons from SVG sources) and **python3** (used to compile lists of files during the configuration stage)
* Command line utilities: **curl**, **git**, **tar** (used to download data at
configuration stage), **Doxygen**, **dot** (to build documentation,)
**inkscape** (used to generate PNG versions of icons from SVG sources) and
**python3** (used to compile lists of files during the configuration stage)

# 2. Other cmake targets

To aid development, the **cmake** scripts include a number of non-obvious targets.
To aid development, the **cmake** scripts include a number of non-obvious
targets.

## 2.1 Target: DistributeQtSource

To comply with legal regulations, we need to make a copy of the Qt sources available on the internet. This target does that automatically. Run the following command on one of Stefan Kebekus' machines:
To comply with legal regulations, we need to make a copy of the Qt sources
available on the internet. This target does that automatically. Run the
following command on one of Stefan Kebekus' machines:

```bash
make DistributeQtSource
```

This will download the sources for the precise Qt version used for building this binary and will make them available at [https://cplx.vm.uni-freiburg.de/storage/QtSources](https://cplx.vm.uni-freiburg.de/storage/QtSources).
This will download the sources for the precise Qt version used for building this
binary and will make them available at
[https://cplx.vm.uni-freiburg.de/storage/QtSources](https://cplx.vm.uni-freiburg.de/storage/QtSources).


## 2.2 Target: generatedSources

This subdirectories of generatedSources contain source files that have been
generated from other sources, for instance icons in PNG format that have been
generated from scalable vector graphics. We include these generated sources in
our GIT repository because the tools required to build them are not universally
available on all platforms.

There exists a special CMake target, **generatedSources** that re-builds the
source files in this directory.
Loading

0 comments on commit 464df9c

Please sign in to comment.