I see that gcc has the following built-in defines that I used into the SD library to distinguish between architectures:
#if defined(__arm__)
// Arduino Due Board follows
#elif defined(__AVR__)
// Other AVR based Boards follows
#else
#error Architecture or board not supported.
#endif