This had to be embedded in the build process (or better, solved for
real).
Using Cmake, Clang, NDK 18b, Qt 5.12 beta 4, some Subsurface code does
not compile. At this point in time, its fully unclear to me why we see the
error as it is.
Thing fail deep down in Qt and NDK headers on #include <cmath>. Error like
"::signbit is not in the global namespace". The most logic reason is an
improper order in which include paths are constructed in the build process.
Any attempt to find the real reason failed. Even very similar command lines
from a qmake build that succeed fail with a cmake style build.
The very very dirty hack is commenting out some lines in NDK 18b:
"./android-ndk-r18b/sources/cxx-stl/llvm-libc++/include/cmath
Comment lines 313-325, and all build, links and runs with no errors
related to this known at this point.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
make sure that all lib code is compiled with -fPIC as things will not
link due to error "requires unsupported dynamic reloc R_ARM_REL32" (for
arm build).
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
On very clean builds not using the wrapper script, the compile of libzip
simply fails because it depend on openssl include files. Simply swap them
around.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
Mysteriously, openssl does not compile with clang with a
sha256-armv4.S:2638:2: error: invalid instruction, did you mean: adr?
The easiest way out is compiling without no_asm. This obviously lowers
the bandwidth on the SSL link (as the asm code is there for performance
reasons), but it has no visible performance loss in my tests.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
With a preparation done in the 4 commits before, now add the arm64 and
use clang instead of gcc as compiler infrastructure.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
Very annoyingly, openssl is re-build and downloaded numerous times
when doing partial builds. Reason for this, is that the original checked
out git repo is moved away, and build in source (as openssl does ...).
So, this simple change leaves the checked out repo in place, and
copies the tree to build in.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
A subtle one. When compiling for arm64, libzip is the only package we
use in mobile that installs its product in lib64. There is no reason for
this given the way our build process is. So, simply force the library to
reside in lib, independent if we are building arm or arm64
architectures.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
Simple cleanup. Do not hard code armv7 as we have QT_ARCH. This
allows, in the future, for arm64 builds as well.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
Hard coding desired ANDROID_PLATFORM on multiple places is simply bad.
Fix this. Further, set the variables to a much newer state.
CAVEAT: this will likely break android build, so be careful on
bisecting. All fixed in next, related commits.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
Make sure all required Android SDK components are explicitly installed
before starting the actual build.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
With commit 0d8fc7ef970e of qt-android-cmake, the buildtools version
is automatically detected. So do not try to pass it any more, as
this breaks the build.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
That's the minimum platform that we have used for a while now,
corresponding to Android 4.1 and newer (i.e., quite ancient).
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This indents the code that is only executed when we aren't in 'quick'
mode. git show -w will show that there is no code change in this commit.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This allows us to skip all the checking / building of dependency
libraries. This also allows us to pass extra arguments to the make
command by separating them from the arguments to build.sh with '--'.
This commit is easier to understand because it didn't increase the
indent in the large block of code that is now only executed if we aren't
in 'quick' mode. That will be fixed in the next commit that is
whitespace only.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Switching to GitHub as source for libzip means that we need to encode
the version number differently. Newer versions of libzip don't compile
cleanly on Android and this one seems new enough.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
The versions for openSSL in variables.sh and get-dep-lib.sh needs to match or we end up recloning the repo on every build.
Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
Add a comment to the variables.sh file so we don't forget to update
qt version in the qt-installer-nontineractive file as well.
Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
Instead of dealing with the challenges of downloading and installing the
official package (which really prefers to be run interactively and
frequently caused Travis failures) we get the pre-packed bits from our
cache instead. Less data to transfer, quicker install.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Update the scripts used to build subsurface-mobile for
andriod to use the variables file.
Removed checks for obsolete Qt versions.
Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
This adds a file that contains the variables used in
the android-build-wrapper and build scripts.
This gives a single location for setting which versions
of Qt, NDK and SDK we use when building the mobile app on linux.
Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
But simply ignore when building outside of Travis.
Of course since we are building Android in a container, we need to first pass
the environment variable to the container...
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
And replace it with something that works on a modern cmake.
The upside with using the right linker, we get the symbols resolved
correctly so we don't need to regex the code.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Since about a year ago qt-android-cmake shifted to using gradle instead
of ant, and the android sdk's stopped supporting ant to.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
This simplifies the code and uses correct quoting for variables.
This also fixes the sha1-stampfile handling so that we don't build
libdivecomputer every time.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
This reworks the googlemaps build to be more like the other builds, with
the same pattern and way of detecting what we need to do, and when we
need to rebuild it.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
We already have a variable pointing to the source dir for subsurface, so
use it.
This way we can build out of tree, in any directory.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
The xmlsoft.org links sometimes time out. Sadly, GitHub API gives us an
oddly named top level directory in the tar file, so lets strip that and
replace it with the "usual" name.
Also, for the "raw" tar files from GitHub we need to run autoreconf
ourselves.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
At least, now the Travis builds use the same Qt version as the
production builds from Dirk that go to the AppStores.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
For some reason it suddenly cannot figure out which build program
to use. This seems like a weird hack, but works.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>