Because FeatureDefines.xcconfig contains configuration options that enable and disable CSS properties, CSSGrammar.{cpp|h} should be rebuilt whenever it changes (which shouldn't be that often). Other ports will need to add their own configuration files as needed. Note that this only affects non-clean builds as a clean build will always rebuild CSSGrammar.{cpp|h}.
After looking at use of $(FEATURE_DEFINES) in DerivedSources.make, I realized that any rule that uses $(FEATURE_DEFINES) to process files should be re-run if Configurations/FeatureDefines.xcconfig changes. The alternative is to do a full clean world build when this happens (or randomly delete generated files until the build works). It's also possible to split up FeatureDefines.xcconfig into pieces (one for CSS features, etc.) so that only the file with the related features needs to have a make rule dependency. However, it's already hard enough to keep FeatureDefines.xcconfig in sync across all four projects (JavaScriptCore, WebCore, WebKit, WebKit2), so splitting it into N files would make that problem (4 * N) times worse.
Created attachment 203453 [details] Patch v1
Running "touch Source/WebCore/Configurations/FeatureDefines.xcconfig" and building does rebuild a number of files (similar to what happens when touching Source/WTF/wtf/Platform.h), although I would argue this behavior is more correct, and should result in fewer failed builds on local engineering builds and buildbots.
Comment on attachment 203453 [details] Patch v1 Clearing flags on attachment: 203453 Committed r151036: <http://trac.webkit.org/changeset/151036>
All reviewed patches have been landed. Closing bug.