diff --git a/ChangeLog b/ChangeLog
index 21469c0929f33185224738cf30c3adf66a4c56f7..83cd84bf99f300fb9c5bf8c1880b0564ec8a7efa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2012-09-20  Niels Möller  <nisse@lysator.liu.se>
+
+	* configure.ac: New substitution IF_CXX, replacing CXX_TESTS.
+	(dummy-dep-files): Handle .cxx files.
+
+	* testsuite/Makefile.in: Use IF_CXX. Include dependency file for
+	cxx-test.o.
+
 2012-09-19  Niels Möller  <nisse@lysator.liu.se>
 
 	From Tim Rühsen:
diff --git a/configure.ac b/configure.ac
index b2478918a8a20b6e15189e21699fdb4db1bd045c..1ca19e62222722e5c5df12886a79f7d50cdd031f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -91,8 +91,8 @@ fi
 AC_PROG_CXX
 
 AC_LANG_PUSH(C++)
-AC_TRY_COMPILE([],[return 0;],[CXX_TESTS='cxx-test$(EXEEXT)'], [CXX_TESTS=''])
-AC_SUBST([CXX_TESTS])
+AC_TRY_COMPILE([],[return 0;],[IF_CXX=''], [IF_CXX='#'])
+AC_SUBST([IF_CXX])
 AC_LANG_POP
 
 AC_PROG_MAKE_SET
@@ -121,8 +121,8 @@ if test x$enable_dependency_tracking = xyes ; then
   # actually needed.
 
   AC_CONFIG_COMMANDS([dummy-dep-files],
-  [(cd "$srcdir" && find . -name '*.c' -print) \
- | sed 's/\.c$//' | (while read f; do echo > "$f.o.d"; echo > "$f.po.d"; done)
+  [(cd "$srcdir" && find . '(' -name '*.c' -o -name '*.cxx' ')' -print) \
+ | sed 's/\.c\(xx\|\)$//' | (while read f; do echo > "$f.o.d"; echo > "$f.po.d"; done)
 ])
 fi
 
diff --git a/testsuite/Makefile.in b/testsuite/Makefile.in
index 86f365a6088cbab758d5eef841c0b3c3544bb808..256bcf6d48e2abe090e81bbbf1e55138f7f8c28b 100644
--- a/testsuite/Makefile.in
+++ b/testsuite/Makefile.in
@@ -35,22 +35,26 @@ TS_HOGWEED_SOURCES = sexp-test.c sexp-format-test.c \
 		     dsa-test.c dsa-keygen-test.c
 
 TS_SOURCES = $(TS_NETTLE_SOURCES) @IF_HOGWEED@ $(TS_HOGWEED_SOURCES)
+CXX_SOURCES = @IF_CXX@ cxx-test.cxx
 
 TS_NETTLE = $(TS_NETTLE_SOURCES:.c=$(EXEEXT))
 TS_HOGWEED = $(TS_HOGWEED_SOURCES:.c=$(EXEEXT))
 TS_C = $(TS_NETTLE) @IF_HOGWEED@ $(TS_HOGWEED)
-TS_CXX = @CXX_TESTS@
+TS_CXX = $(CXX_SOURCES:.cxx=$(EXEEXT))
 TARGETS = $(TS_C) $(TS_CXX)
 TS_SH = sexp-conv-test pkcs1-conv-test symbols-test
 TS_ALL = $(TARGETS) $(TS_SH)
 EXTRA_SOURCES = sha1-huge-test.c
 EXTRA_TARGETS = $(EXTRA_SOURCES:.c=$(EXEEXT))
 
-SOURCES = $(TS_SOURCES) testutils.c
+# C source files to be built
+SOURCES = $(TS_SOURCES) $(EXTRA_SOURCES) testutils.c
 
-DISTFILES = $(SOURCES) $(EXTRA_SOURCES) cxx-test.cxx Makefile.in .test-rules.make \
-	$(TS_SH) setup-env teardown-env \
-	gold-bug.txt testutils.h
+# Includes all C source files, regardless of configuration
+DISTFILES = $(TS_NETTLE_SOURCES) $(TS_HOGWEED_SOURCES) \
+	    $(EXTRA_SOURCES) cxx-test.cxx Makefile.in .test-rules.make \
+	    $(TS_SH) setup-env teardown-env \
+	    gold-bug.txt testutils.h
 
 all: $(TARGETS) $(EXTRA_TARGETS)
 
@@ -116,4 +120,5 @@ distclean: clean
 tags:
 	etags -o $(srcdir)/TAGS --include $(top_srcdir) $(srcdir)/*.c $(srcdir)/*.h
 
-@DEP_INCLUDE@ $(SOURCES:.c=.$(OBJEXT).d)
+DEP_FILES = $(SOURCES:.c=.$(OBJEXT).d) $(CXX_SOURCES:.cxx=.$(OBJEXT).d)
+@DEP_INCLUDE@ $(DEP_FILES)