Separate CFLAGS and CPPFLAGS.  CFLAGS should not contain preprocessor
directives, which is the role of CPPFLAGS.  Closes SF patch #414991.
diff --git a/Demo/embed/Makefile b/Demo/embed/Makefile
index ebc274f..bdb381e 100644
--- a/Demo/embed/Makefile
+++ b/Demo/embed/Makefile
@@ -15,7 +15,8 @@
 # Compiler flags
 OPT=		-g
 INCLUDES=	-I$(srcdir)/Include -I$(blddir)
-CFLAGS=		$(OPT) $(INCLUDES)
+CFLAGS=		$(OPT)
+CPPFLAGS=	$(INCLUDES)
 
 # The Python library
 LIBPYTHON=	$(blddir)/libpython$(VERSION).a
diff --git a/Demo/pysvr/Makefile b/Demo/pysvr/Makefile
index 7e36553..cb6605f 100644
--- a/Demo/pysvr/Makefile
+++ b/Demo/pysvr/Makefile
@@ -31,7 +31,8 @@
 OTHERLIBS=-lnsl -lpthread -ldl -lm -ldb -lutil
 
 # Compilation and link flags -- no need to change normally
-CFLAGS=$(PYINCL) $(OPT)
+CFLAGS=$(OPT)
+CPPFLAGS=$(PYINCL)
 LIBS=$(PYLIBS) $(RLLIBS) $(OTHERLIBS)
 
 # Default port for the pysvr application
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 103a36b..0354849 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -55,7 +55,8 @@
 # Compiler options
 OPT=		@OPT@
 DEFS=		@DEFS@
-CFLAGS=		$(OPT) -I. -I$(srcdir)/Include $(DEFS)
+CFLAGS=		$(OPT)
+CPPFLAGS=	-I. -I$(srcdir)/Include $(DEFS)
 LDFLAGS=	@LDFLAGS@
 LDLAST=		@LDLAST@
 SGI_ABI=	@SGI_ABI@
@@ -64,7 +65,7 @@
 # Extra C flags added for building the interpreter object files.
 CFLAGSFORSHARED=@CFLAGSFORSHARED@
 # C flags used for building the interpreter object files
-PY_CFLAGS=	$(CFLAGS) $(CFLAGSFORSHARED)
+PY_CFLAGS=	$(CFLAGS) $(CPPFLAGS) $(CFLAGSFORSHARED)
 
 
 # Machine-dependent subdirectories
@@ -283,7 +284,8 @@
 
 # Build the shared modules
 sharedmods: $(PYTHON)
-	PYTHONPATH= ./$(PYTHON) $(srcdir)/setup.py build
+	unset PYTHONPATH PYTHONHOME PYTHONSTARTUP; \
+		./$(PYTHON) $(srcdir)/setup.py build
 
 # buildno should really depend on something like LIBRARY_SRC
 buildno: $(PARSER_OBJS) \
@@ -399,10 +401,10 @@
 Python/compile.o Python/symtable.o: $(GRAMMAR_H)
 
 Python/getplatform.o: $(srcdir)/Python/getplatform.c
-		$(CC) -c $(CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
+		$(CC) -c $(CFLAGS) $(CPPFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
 
 Python/importdl.o: $(srcdir)/Python/importdl.c
-		$(CC) -c $(CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
+		$(CC) -c $(CFLAGS) $(CPPFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
 
 Objects/object.o: $(srcdir)/Objects/object.c $(srcdir)/Objects/obmalloc.c
 
diff --git a/Misc/Makefile.pre.in b/Misc/Makefile.pre.in
index 2d14294..01b4901 100644
--- a/Misc/Makefile.pre.in
+++ b/Misc/Makefile.pre.in
@@ -95,7 +95,8 @@
 PYTHON=		python
 
 # Add more -I and -D options here
-CFLAGS=		$(OPT) -I$(INCLUDEPY) -I$(EXECINCLUDEPY) $(DEFS)
+CFLAGS=		$(OPT)
+CPPFLAGS=	-I$(INCLUDEPY) -I$(EXECINCLUDEPY) $(DEFS)
 
 # These two variables can be set in Setup to merge extensions.
 # See example[23].
@@ -228,7 +229,7 @@
 
 # Make config.o from the config.c created by makesetup
 config.o:	config.c
-		$(CC) $(CFLAGS) -c config.c
+		$(CC) $(CFLAGS) $(CPPFLAGS) -c config.c
 
 # Setup is copied from Setup.in *only* if it doesn't yet exist
 Setup:
diff --git a/Modules/makesetup b/Modules/makesetup
index 8fd6d5e..f4287a5 100755
--- a/Modules/makesetup
+++ b/Modules/makesetup
@@ -216,7 +216,7 @@
 			*) src='$(srcdir)/'"$srcdir/$src";;
 			esac
 			case $doconfig in
-			no)	cc="$cc \$(CCSHARED) \$(CFLAGS)";;
+			no)	cc="$cc \$(CCSHARED) \$(CFLAGS) \$(CPPFLAGS)";;
 			*)
 				cc="$cc \$(PY_CFLAGS)";;
 			esac
diff --git a/Tools/freeze/freeze.py b/Tools/freeze/freeze.py
index dfd0369..b534098 100755
--- a/Tools/freeze/freeze.py
+++ b/Tools/freeze/freeze.py
@@ -424,7 +424,8 @@
         outfp.close()
     infp.close()
 
-    cflags = defines + includes + ['$(OPT)']
+    cflags = ['$(OPT)']
+    cppflags = defines + includes
     libs = [os.path.join(binlib, 'libpython$(VERSION).a')]
 
     somevars = {}
@@ -434,6 +435,7 @@
         somevars[key] = makevars[key]
 
     somevars['CFLAGS'] = string.join(cflags) # override
+    somevars['CPPFLAGS'] = string.join(cppflags) # override
     files = ['$(OPT)', '$(LDFLAGS)', base_config_c, base_frozen_c] + \
             files + supp_sources +  addfiles + libs + \
             ['$(MODLIBS)', '$(LIBS)', '$(SYSLIBS)']
diff --git a/Tools/freeze/makemakefile.py b/Tools/freeze/makemakefile.py
index 4d9913e..b1bad2b 100644
--- a/Tools/freeze/makemakefile.py
+++ b/Tools/freeze/makemakefile.py
@@ -19,7 +19,7 @@
             base = os.path.basename(file)
             dest = base[:-2] + '.o'
             outfp.write("%s: %s\n" % (dest, file))
-            outfp.write("\t$(CC) $(CFLAGS) -c %s\n" % file)
+            outfp.write("\t$(CC) $(CFLAGS) $(CPPFLAGS) -c %s\n" % file)
             files[i] = dest
             deps.append(dest)