The reason `$(CPPFLAGS)' appears after `$(AM_CPPFLAGS)' or `$(mumble_CPPFLAGS)' in the compile command is that users should always have the last say. It probably makes more sense if you think about it while looking at the `CXXFLAGS=-O0' above, which should supersede any other switch from `AM_CXXFLAGS' or `mumble_CXXFLAGS' (and this of course replaces the previous value of `CXXFLAGS'). You should never redefine a user variable such as `CPPFLAGS' in `Makefile.am'. Use `automake -Woverride' to diagnose such mistakes. Even something like CPPFLAGS = -DDATADIR=\"$(datadir)\" @CPPFLAGS@ is erroneous. Although this preserves `configure''s value of `CPPFLAGS', the definition of `DATADIR' will disappear if a user attempts to override `CPPFLAGS' from the `make' command line. AM_CPPFLAGS = -DDATADIR=\"$(datadir)\" is all what is needed here if no per-target flags are used.