halconf.h includes mcuconf.h. the contents of halconf.h (all those "#if !defined()") indicate that all changes can be / should be made in mcuconf.h.
this works correct until it comes to os/hal/ports/*/*/platform.mk.
HALCONF := $(strip $(shell cat $(CONFDIR)/halconf.h | egrep -e "\#define"))
quite efficient to bring settings from header files to makefiles, but breaks setting (some) things in mcuconf.h (to keep halconf.h as it is) i bet, settings things in mcuconf.h works for all non-HAL_USE_* defines.
i don't have a solution (gcc -E may help in some way), but i'd like to mention this. a comment in the header file would make things clear.