Definiing in Makefile (etc) makes it easy for values to go stale between build systems, especially when migrating to downstream build systems. I can't think of any reason not to define this in source code, which will be the same between all versions of builds, am I missing something?