Используется специальный синтаксис для проверки, был ли определен данный макрос. Например:
| 
 %{?macro_to_test: expression}   | 
Эта строка говорит RPM развернуть выражение expression, если макрос macro_to_test существует. Если макрос не существует, ничего не будет выведено. Проверку также можно осуществлять реверсивно. Если в проверке первый символ - знак !, выражение будет разворачиваться, если макрос НЕ существует:
| 
 %{!?macro_to_test: expression}   | 
В данном примере выражение expression будет развернуто, если макрос macro_to_test не существует.
При необходимости выражение можно пропустить и проверять только наличие или отсутствие макроса. Если макрос существует, RPM использует значение макроса, если не существует, RPM не будет делать ничего. Например:
| 
 %build   | 
В этом случае, если макрос _with_ldap существует, значение этого макроса будет подставлено в командную строку в скрипт ./configure в качестве параметра. Если макрос _with_ldap не существует, в скрипт не будет подставлено никаких параметров. Это весьма мощная возможность для процессов сборки или установки пакета.