Qt 5.9 and aarch64 platform build woes
In the need to build Qt 5.9 from source for aarch64 platform. We need 5.9 to use the latest QMapboxGL plugin within QtLocation. Using QMapboxGL with 5.7.1 separately has a lot of negatives, like flickering map markers, etc, all solved with 5.9 and a QtLocation submodule that puts QMapboxGL as a map plugin.
Running on Ubuntu x86_64, this all works out-of-the-box.
Problems we are running into are just configuring Qt 5.9 on aarch64, where 5.7.1 from source (git) works without issue on aarch64.
For starters, QMapboxGL requires g++ 5, our aarch64 OS, g++ -> 4.9, so adding in g++ 5 results in a binary g++-5. The only way I could get Qt built using that was modifying
qtbase/mkspecs/common/g++-base.conf, Qt configure would not use CXX QMAKE_CXX etc... Ok easy enough.
Then we encounter breakpad stuff from
qtbase/mkspecs/features/default_post.prf, even though we do not have anything related to breakpad installed, again 5.7.1 worked, it kept enabling breakpad and since QT_BREAKPAD_ROOT_PATH is empty, the generated LINK lines were trying to execute /qtbreakpadsymbols which obviously doesn't exist. Commented out those to make it further.
Next encounter I am unable to solve and appears related to the configure.json stuff, which seems new from 5.7.1 to 5.9...
Running configuration tests... Checking for gold linker... yes Checking for valid makespec... yes Checking for target architecture... arm64 Checking for C++14 support... yes Checking for Compiler... GCC 5.1.1 Checking for compiler defaulting to C++11 or higher... no Checking for new dtags support... yes Checking for pkg-config... yes Checking for D-Bus >= 1.2 (host)... yes Checking for udev... yes Checking for mremap()... yes Project ERROR: Left hand side of || is non-boolean value 'arch.arm' in expression '(arch.arm || arch.arm64) && tests.neon'
arch.arm64 is defined, but
arch.armseems broken, if I change the condition to just
arch.arm64it passes but than fails on a similar error for ICU
Running configuration tests... Checking for clock_gettime()... yes Checking for POSIX monotonic clock... yes Checking for dlopen() in libc... no Checking for dlopen() in libdl... yes Checking for eventfd... yes Checking for GLib... yes Checking for POSIX iconv... yes Checking for inotify... yes Checking for SysV IPC... yes Checking for 64 bit atomics... yes Checking for ppoll()... yes Checking for slog2... no Checking for DoubleConversion... no Checking for PCRE2... no Checking for O_CLOEXEC... yes Checking for working std::atomic for function pointers... yes Checking for getaddrinfo()... yes Checking for getifaddrs()... yes Checking for IPv6 ifname... yes Checking for OpenSSL... yes Project ERROR: Evaluation of condition 'libs.db2' yielded non-boolean value 'libs.db2' in feature 'sql-db2'.
Anyone know about the new configure.json and where I should be looking to fix this?
If it matters, Qt 5.8 on aarch64 configures and builds and also seems to use configure.json. So something new in 5.9
Hi and welcome to devnet,
5.9 being the current dev branch, you should rather bring this topic to the interest mailing list. You'll find there Qt's developers/maintainers. This forum is more user oriented.