libzmq/builds
Stephan Guilloux e6e76096bf
Problem: Android APP fails to load ZMQ (ARM64 only) (#4442)
* Problem: Android APP fails to load ZMQ (ARM64 only)

Seen with physical Android devices running ARM64.
Not seen with ARM, X86 or X86_64.

Any Android APP loading ZMQ fails with:
```
[FATAL] Couldn't load library library zmq from jar. Dependency is required!
```

Unpack zyre-android-2.0.1.jar, find libzmq.so for ARM64 and look for missing
symbols:
```
prompt> unzip zyre-android-2.0.1.jar
prompt> cd lib/arm64-v8a
prompt> nm --undefined-only ./libzmq.so | head
                 U __aarch64_ldadd4_acq
                 U __aarch64_ldadd4_acq_rel
                 U __aarch64_ldadd4_rel
                 U __aarch64_ldadd4_relax
                 U __aarch64_ldadd8_acq_rel
                 U __aarch64_ldadd8_relax
                 U __aarch64_swp8_acq
                 U __aarch64_swp8_acq_rel
                 U __aarch64_swp8_rel
                 U __aarch64_swp8_relax
prompt>
```
Some more symbols are missing, but those are relevant for this issue.

OK.
These symbols are present in libc++_shared, but not exported ...:
```
prompt> nm libc++_shared.so | grep aarch64
00000000000ee6d0 t __aarch64_cas1_acq_rel
00000000000ee7a0 t __aarch64_cas8_acq_rel
00000000001028f0 b __aarch64_have_lse_atomics
00000000000ee840 t __aarch64_ldadd4_acq_rel
00000000000ee810 t __aarch64_ldadd4_rel
00000000000ee8a0 t __aarch64_ldadd8_acq_rel
00000000000ee870 t __aarch64_ldadd8_relax
00000000000ee7e0 t __aarch64_swp8_acq_rel
prompt>
```

Issue seen also on the WEB, with GCC & CLANG:
- https://bugzilla.redhat.com/show_bug.cgi?id=1830472
- cea175b838
- ...

Solution: Add `-mno-outline-atomics` to CXXFLAGS (FLUTTER fix).

Additionaly, had to introduce NDK_NUMBER.
This variable is calculated in `android_build_helper.sh`.
It represents the numeric form of NDK_VERSION:
```
  NDK_VERSION          --> NDK_NUMBER
  android-ndk-r25      --> 2500
  android-ndk-r23c     --> 2303
  android-ndk-r22      --> 2200
  android-ndk-r21e     --> 2105
  ... and so on
```

This will help a few other things (NDK download ?).
2022-10-18 10:19:15 +01:00
..
abi-compliance-checker Problem: removing latest_branch breaks ABI CI job 2020-05-12 09:13:06 +01:00
android Problem: Android APP fails to load ZMQ (ARM64 only) (#4442) 2022-10-18 10:19:15 +01:00
cmake Changed more git:gihub.com to https://github.com 2022-09-22 02:47:22 +02:00
coverage Problem: Travis is no longer free for FLOSS projects 2021-09-22 16:42:09 +01:00
cygwin Problem: FD_SETSIZE not set to 16k for all build definitions 2016-06-13 09:42:54 +01:00
deprecated-msvc Fix typos 2022-02-11 00:45:06 +02:00
fuzz Problem: fuzzer corpus file can be quite large 2020-07-04 17:50:35 +01:00
gyp Problem: norm fails to compile under windows (#4123) 2021-01-18 08:42:14 +00:00
ios Fix iOS build failure for x86_64 2021-04-28 11:41:36 +03:00
mingw32 add link libsodium.a 2016-12-22 14:25:00 +08:00
nuget Fix typos 2022-02-11 00:45:06 +02:00
openwrt Problem: OpenWRT Makefile still uses tarballs, now using GIT HEAD master 2016-01-15 11:19:24 +01:00
qnx Problem: misspelled ar program name 2019-05-07 10:37:47 -04:00
valgrind Changed more git:gihub.com to https://github.com 2022-09-22 02:47:22 +02:00
vxworks Pull request to merge porting to WindRiver VxWorks 6.x (#2966) 2018-03-10 11:03:02 +00:00
zos Fix typos 2022-02-11 00:45:06 +02:00
Makefile.am Revert "Problem: nuget internal metadata not maintained, no relicense" 2020-02-03 16:23:38 +01:00
README Problem: prepared Visual Studio solution files are hard to maintain and redundant with CMake builds 2018-05-23 17:26:28 +02:00

This directory holds build tools, i.e. tools we use to build the current
code tree. Packaging tools (which take released tarballs or github code
repos) should go into /packaging.

Note: 'deprecated-msvc' contains deprecated prepared Visual Studio Solution 
files for various Visual Studio versions. These are no longer maintained, 
and may or may not work. Please use cmake instead to build with Visual
Studio. Rationale: The solution and project files are hard to maintain,
since there are different variants for each Visual Studio version.
The tests have never been included there for this reason, so they were
never usable for actual development of libzmq. If you encounter that 
something that worked before does not work with CMake, please open as 
issue at https://github.com/zeromq/libzmq/issues.