Есть несколько программ, которые должны работать на платах с разными ARM-процами, разных производителей. Основная часть кода от железа не зависит и работать будет и так, но есть небольшие куски, которые завязаны на особенности процессора - работа с GPIO, например.
Собственно вопрос - как бы сорганизовать эти куски так, чтобы в коде было как можно меньше #ifdef, а в идеале вообще не было.
Пока предполагаю организовать в виде gpio.h gpio-arm1.c arm2.c и т.п. А уже при помощи cmake выбирать какой конкретный исходник подсовывать в бинарник. в gpio.h - заголовки функций и структур данных, а в .c - реализации под разные процессоры.