title: What is the difference between DEFS and CPPFLAGS in autoconf and automake
body: <p>I already read about the difference between <a href="https://stackoverflow.com/questions/2754966/cflags-vs-cppflags">CFLAGS and CPPFLAGS</a>. But my Makefile.am currently uses both DEFS and CPPFLAGS and I am not sure about the difference.</p>
  
  <pre><code>DEFS += -DLOCALEDIR=\"$(localedir)\" -DDATADIR=\"$(datadir)\" -DPKGDATADIR=\"$(pkgdatadir)\"
  </code></pre>
  
  <p>and:</p>
  
  <pre><code>src_foo_CPPFLAGS = \
      $(AM_CPPFLAGS) \
      -I$(top_builddir)/src \
      -DDATADIR='"$(datadir)"' \
      -DMODULEDIR='"$(moduledir)"' \
      -DLIBEXECDIR='"$(libexecdir)"'
  </code></pre>
  
  <p>Both the CPPFLAGS and the DEFS seems to create <em>defines</em> with the <code>-D</code> option. So whats the difference. Can I remove <code>DEFS</code> and just add the missing defines (<code>PKGDATADIR</code> and <code>LOCALEDIR</code>) to <code>CPPFLAGS</code>?</p>