Отключение встроенных правил выполняется путем написания пустого правила для .SUFFIXES
:
.SUFFIXES:
Удалив встроенные правила, я не уверен, что стирание встроенных переменных поможет вам гораздо больше, чем просто не забывая устанавливать их самостоятельно или не использовать их, но вы можете использовать что-то вроде
$(foreach V
$(shell make -p -f/dev/null 2>/dev/null | sed -n '/^[^:#= ]* *=/s/ .*//p'),
$(if $(findstring default,$(origin $V)),$(eval $V=)))
... что по общему признанию довольно безумно. Если есть способ получить список определенных переменных из make (вместо выделения другой make), он будет жизнеспособным. На самом деле это не намного лучше, чем
CC=
CXX=
# etc, for each likely built-in variable