As arch=arm is not directly know to TBB make system try to specify either arch=arm32 or arch=arm64 in the make command, depending on what your system really is.
"@Anton Potapov: Thank you for the help;
unfortunately, arch=arm32 doesn't seem to improve the situation."
""I was quite surprised when I read this suggestion, since arm32 does not occur in the source either""
Yes you right the sources do not mention arm at whole. The trick is that in order to get know correct symbol names to link with, makefiles try to find either "32" or "64" literal constants in the architecture name, if that architecture is not known to the build system.
"About the atomics, yes, it
seems that the latest version of the Android NDK (r7c) does not support them.
If I turn off 64-bit atomics, what do I lose? Performance? I compile for the
Tegra, which is a 32-bit platform. I didn't try your solution yet, I will
report back when I do."
"TBB does not use 64-bit atomics on a 32-bit platform, so there would not be an adverse impact on performance."
Raf is right. TBB does not use 64 bit on a 32-bit platform.
Disabling of double word atomics (via setting -D__TBB_64BIT_ATOMICS=0) during building of test cases, as Grant suggested seems to be right way. I.e. to run tests:
make test arch=arm compiler=gcc CXXFLAGS="-DTBB_USE_GCC_BUILTINS -D__TBB_64BIT_ATOMICS=0 -march=armv7-a -mfloat-abi=softfp -mfpu=neon -ldl"
Obviously, the only thing that should be cared of - is to take care that user code does _not_ use double word atomics. However you will get the same link error if your code does use them :)