-lib_SOURCES += fnmatch_.h
-EXTRA_DIST += fnmatch_loop.c
-DISTCLEANFILES += fnmatch.h
+BUILT_SOURCES += $(FNMATCH_H)
+EXTRA_DIST += fnmatch_.h fnmatch_loop.c
+
+# We need the following in order to create <fnmatch.h> when the system
+# doesn't have one that supports the required API.
+fnmatch.h: fnmatch_.h
+ cp $(srcdir)/fnmatch_.h $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += fnmatch.h fnmatch.h-t