Missing system include directory with standalone toolchain and Android API version 21 in NDK 16b
I'm actually not sure if this is an error in CMake, or in the current CMake android toolchain.
NDK 16b's standalone toolchain puts several function declarations for versions of strol_d in a shim file, /sysroot/usr/local/include/stdlib.h, which subsequently includes /sysroot/usr/include/stdlib.h. The current system is adding both to the search paths, but is searching /usr/include before /usr/local/include which breaks the build. I'm continuing to investigate possible solutions, but it's worth noting that the new NDK has a much improved android toolchain file included in it, which does not produce this error.
Output from make VERBOSE=ON:
/opt/local/android-standalone-toolchain/bin/clang++ --target=aarch64-none-linux-android --gcc-toolchain=/opt/local/android-standalone-toolchain --sysroot=/opt/local/android-standalone-toolchain/sysroot -DANDROID -I/opt/local/ext-build/flatbuffers/include -isystem /opt/local/android-standalone-toolchain/sysroot/usr/include -v -std=c++0x -Wall -pedantic -Werror -Wextra -O3 -DNDEBUG -fPIE -o CMakeFiles/flatc.dir/src/idl_parser.cpp.o -c /opt/local/ext-build/flatbuffers/src/idl_parser.cpp
Output from clang -v:
Android clang version 5.0.300080 (based on LLVM 5.0.300080)
Target: aarch64-none-linux-android
Thread model: posix
InstalledDir: /opt/local/android-standalone-toolchain/bin
Found candidate GCC installation: /opt/local/android-standalone-toolchain/lib/gcc/aarch64-linux-android/4.9.x
Selected GCC installation: /opt/local/android-standalone-toolchain/lib/gcc/aarch64-linux-android/4.9.x
Candidate multilib: .;@m64
Selected multilib: .;@m64
"/opt/local/android-standalone-toolchain/bin/clang50++" -cc1 -triple aarch64-none-linux-android -emit-obj -disable-free -disable-llvm-verifier -discard-value-names -main-file-name idl_parser.cpp -mrelocation-model pic -pic-level 2 -pic-is-pie -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -fuse-init-array -target-cpu generic -target-feature +neon -target-abi aapcs -backend-option -aarch64-fix-cortex-a53-835769=1 -target-linker-version 2.24 -v -dwarf-column-info -debugger-tuning=gdb -coverage-notes-file /opt/local/ext-build/flatbuffers/b/CMakeFiles/flatc.dir/src/idl_parser.cpp.gcno -resource-dir /opt/local/android-standalone-toolchain/lib64/clang/5.0.300080 -isystem /opt/local/android-standalone-toolchain/sysroot/usr/include -D __ANDROID_API__=21 -D ANDROID -I /opt/local/ext-build/flatbuffers/include -D NDEBUG -isysroot /opt/local/android-standalone-toolchain/sysroot -internal-isystem /opt/local/android-standalone-toolchain/lib/gcc/aarch64-linux-android/4.9.x/../../../../include/c++/4.9.x -internal-isystem /opt/local/android-standalone-toolchain/lib/gcc/aarch64-linux-android/4.9.x/../../../../include/c++/4.9.x/aarch64-linux-android -internal-isystem /opt/local/android-standalone-toolchain/lib/gcc/aarch64-linux-android/4.9.x/../../../../include/c++/4.9.x/backward -internal-isystem /opt/local/android-standalone-toolchain/sysroot/usr/local/include -internal-isystem /opt/local/android-standalone-toolchain/lib64/clang/5.0.300080/include -internal-externc-isystem /opt/local/android-standalone-toolchain/sysroot/include -internal-externc-isystem /opt/local/android-standalone-toolchain/sysroot/usr/include -O3 -Wall -Werror -Wextra -pedantic -std=c++0x -fdeprecated-macro -fdebug-compilation-dir /opt/local/ext-build/flatbuffers/b -ferror-limit 19 -fmessage-length 120 -femulated-tls -fallow-half-arguments-and-returns -fno-signed-char -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -o CMakeFiles/flatc.dir/src/idl_parser.cpp.o -x c++ /opt/local/ext-build/flatbuffers/src/idl_parser.cpp
clang -cc1 version 5.0.300080 based upon LLVM 5.0.300080 default target x86_64-unknown-linux
ignoring nonexistent directory "/opt/local/android-standalone-toolchain/lib/gcc/aarch64-linux-android/4.9.x/../../../../include/c++/4.9.x/backward"
ignoring nonexistent directory "/opt/local/android-standalone-toolchain/sysroot/include"
ignoring duplicate directory "/opt/local/android-standalone-toolchain/sysroot/usr/include"
#include "..." search starts here:
#include <...> search starts here:
/opt/local/ext-build/flatbuffers/include
/opt/local/android-standalone-toolchain/sysroot/usr/include
/opt/local/android-standalone-toolchain/lib/gcc/aarch64-linux-android/4.9.x/../../../../include/c++/4.9.x
/opt/local/android-standalone-toolchain/lib/gcc/aarch64-linux-android/4.9.x/../../../../include/c++/4.9.x/aarch64-linux-android
/opt/local/android-standalone-toolchain/sysroot/usr/local/include
/opt/local/android-standalone-toolchain/lib64/clang/5.0.300080/include
End of search list.
The resulting error when compiling (I'm using flatbuffers) is:
/opt/local/android-standalone-toolchain/lib/gcc/aarch64-linux-android/4.9.x/../../../../include/c++/4.9.x/locale:807:12: error: use of undeclared identifier 'strtof_l'
return strtof_l(__a, __p2, _LIBCPP_GET_C_LOCALE);