CMAKE_CXX_FLAGS setting in CMAKE_TOOLCHAIN_FILE ignored in CHECK_CXX_SOURCE_COMPILES
When creating a configure time check e.g. foo.cmake
include(CheckCXXSourceCompiles)
check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_LIBATOMIC)
if (HAVE_LIBATOMIC)
list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
endif()
CHECK_CXX_SOURCE_COMPILES("int main() { long* temp=0; long ret=__sync_add_and_fetch(temp, 1); return 0; }" HAS_BUILTIN_SYNC_ADD_AND_FETCH)
The we see that if we set something like below in toolchain.cmake which is passed by -DCMAKE_TOOLCHAIN_FILE
set( CMAKE_CXX_FLAGS "-march=armv7ve -marm -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a" CACHE INTERNAL "" FORCE)
set( CMAKE_C_FLAGS "-march=armv7ve -marm -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a" CACHE INTERNAL "" FORCE)
then these flags are not passed when doing the above check for atomics.
However if I create same configure time check in C it is using CMAKE_C_FLAGS in tests which means cmake has passed it correctly
include(CheckCSourceCompiles)
check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_LIBATOMIC)
if (HAVE_LIBATOMIC)
list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
endif()
CHECK_C_SOURCE_COMPILES("int main() { long* temp=0; long ret=__sync_add_and_fetch(temp, 1); return 0; }" HAS_BUILTIN_SYNC_ADD_AND_FETCH)