It is easy to detect, if you are compiling e.g. for ARM, but it is not possible to detect by macro, if you are compiling for ARM on ARM or cros-compiling on x86.
You need support in build system for this and pass your variable to compiler
gcc -DIS_CROSSCOMPILING=1
Using this GCC dump preprocessor defines check yourself output of cross compiler and system compiler. There are lot of defines but nothing about cross compilation.
According to this http://www.gnu.org/software/automake/manual/html_node/Cross_002dCompilation.html
autotools are performing some check
checking whether we are cross compiling... yes
and I hope that this result can be made visible for gcc.
You can also run some ugly command to check some sort of cross compilation
gcc -march=native -E - < /dev/null
this command will fail, if it is cross compiler to different architecture, but it will not fail, if it is just for different operating system.