-test_randomdecl_SOURCES = test/randomdecl.c test/declgen.c
-test_randomdecl_LDADD = libtest.a libcdecl.la libgnu.la
-$(test_randomdecl_OBJECTS): $(gnulib_headers)
-
-test_crossparse_LDADD = libtest.a libcdecl.la libgnu.la
-$(test_crossparse_OBJECTS): $(gnulib_headers)
-test_normalize_LDADD = libtest.a src/output.lo src/normalize.lo \
- libcdecl.la libgnu.la
-$(test_normalize_OBJECTS): $(gnulib_headers)
-
-src/parse.lo: src/scan.h
-src/scan.lo: src/parse.h
-src/parse-decl.lo: src/scan.h src/parse.h src/typemap.h
-src/output.lo: src/specstr.h
-test/declgen.$(OBJEXT): test/typegen.h
+TEST_LIBS = libtest.a libcdecl.la libgnu.a $(LDEXP_LIBM)
+
+t_randomdecl_SOURCES = t/randomdecl.c t/declgen.c
+t_randomdecl_LDADD = $(TEST_LIBS)
+$(t_randomdecl_OBJECTS): $(gnulib_headers)
+
+t_crossparse_LDADD = $(TEST_LIBS)
+$(t_crossparse_OBJECTS): $(gnulib_headers)
+
+t_normalize_LDADD = src/normalize.lo $(TEST_LIBS)
+$(t_normalize_OBJECTS): $(gnulib_headers)
+
+t_rng_test_LDADD = $(TEST_LIBS)
+$(t_rng_test_OBJECTS): $(gnulib_headers)
+EXTRA_DIST += t/xos256p.c
+
+check_PROGRAMS += t/rendertest
+t_rendertest_LDADD = $(TEST_LIBS)
+$(t_rendertest_OBJECTS): $(gnulib_headers)
+
+check_PROGRAMS += t/scantest
+t_scantest_LDADD = src/scan.lo src/parse.lo src/keywords.lo $(TEST_LIBS)
+$(t_scantest_OBJECTS): $(gnulib_headers) src/scan.h src/parse.h
+
+EXTRA_LTLIBRARIES += t/liberrtest.la
+t_liberrtest_la_SOURCES = src/error.c t/errmemwrap.c
+t_liberrtest_la_CPPFLAGS = $(AM_CPPFLAGS) -DTEST_MALLOC_HOOK
+t_liberrtest_la_LDFLAGS = -no-undefined -avoid-version \
+ -bindir '$(bindir)' -rpath '$(libdir)'
+EXTRA_t_liberrtest_la_DEPENDENCIES = $(shared_gl_objects)
+t_liberrtest_la_LIBADD = src/output.lo $(EXTRA_t_liberrtest_la_DEPENDENCIES) \
+ $(LTLIBINTL) $(LIBTHREAD)
+t_liberrtest_la_SHORTNAME = t
+$(t_liberrtest_la_OBJECTS): $(gnulib_headers)
+
+check_PROGRAMS += t/errthread
+t_errthread_LDADD = t/liberrtest.la libtest.a $(LIBMULTITHREAD)
+$(t_errthread_OBJECTS): $(gnulib_headers) src/errmsg.h
+
+src/error.lo: src/errmsg.h
+src/keywords.lo: src/parse.h
+src/output.lo: src/parse.h src/specstr.h
+src/parse-decl.lo: src/scan.h src/parse.h src/typemap.h src/errmsg.h
+src/parse.lo: src/scan.h src/errmsg.h
+src/scan.lo: src/parse.h src/errmsg.h
+t/declgen.$(OBJEXT): t/typegen.h
+t/cdeclerr.$(OBJEXT): src/errmsg.h
+
+check_PROGRAMS += t/cdeclerr
+t_cdeclerr_SOURCES = t/cdeclerr.c
+EXTRA_t_cdeclerr_DEPENDENCIES = src/error.lo src/output.lo $(shared_gl_objects)
+t_cdeclerr_LDADD = $(EXTRA_t_cdeclerr_DEPENDENCIES) \
+ libtest.a $(LTLIBINTL) $(LIBTHREAD)
+$(t_cdeclerr_OBJECTS): $(gnulib_headers)