Index: src/libcfa/Makefile.am
===================================================================
--- src/libcfa/Makefile.am	(revision e10537a92aeae4971ee59bb0c7bc9cb43319fc90)
+++ src/libcfa/Makefile.am	(revision 4f18de345b577edd78d514049636511fccecfac1)
@@ -64,6 +64,13 @@
 
 # extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
+# SKULLDUGGERY in order to make sure this isn't called make the rule always fail but also create a rule for headers
 % : %.c
-	@true
+	echo "Dummy rule, should never be called"
+	false
+
+# This rule should always match headers and since it has no prerequisite it will never be called
+$(addprefix $(srcdir)/,$(headers)):
+	echo "Dummy rule, should never be called"
+	false
 
 concurrency/libcfa_a-invoke.o : concurrency/invoke.c
Index: src/libcfa/Makefile.in
===================================================================
--- src/libcfa/Makefile.in	(revision e10537a92aeae4971ee59bb0c7bc9cb43319fc90)
+++ src/libcfa/Makefile.in	(revision 4f18de345b577edd78d514049636511fccecfac1)
@@ -1676,6 +1676,13 @@
 
 # extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
+# SKULLDUGGERY in order to make sure this isn't called make the rule always fail but also create a rule for headers
 % : %.c
-	@true
+	echo "Dummy rule, should never be called"
+	false
+
+# This rule should always match headers and since it has no prerequisite it will never be called
+$(addprefix $(srcdir)/,$(headers)):
+	echo "Dummy rule, should never be called"
+	false
 
 concurrency/libcfa_a-invoke.o : concurrency/invoke.c
Index: src/tests/Makefile.am
===================================================================
--- src/tests/Makefile.am	(revision e10537a92aeae4971ee59bb0c7bc9cb43319fc90)
+++ src/tests/Makefile.am	(revision 4f18de345b577edd78d514049636511fccecfac1)
@@ -79,4 +79,15 @@
 	@+${TEST_PY} --debug=${debug} -Iconcurrent
 
+# SKULLDUGGERY like libcfa/Makefile.am prevent extensionless headers from being generated
+# however, here it is more complicated because it must match the dependencies exactly
+# depencies seem to have the absolute path to the build directory and relative path
+# to the headers from there
+headers = $(shell find $(top_srcdir)/src/libcfa -type f ! -name "*.*")
+headers_real = $(shell realpath --relative-to=$(top_builddir) $(headers))
+headers_deps = $(addprefix $(abs_top_builddir)/, $(headers))
+$(headers_deps) :
+	echo "Dummy rule, should never be called"
+
+# implicit rule so not all test require a rule
 % : %.c $(CC)
 	$(COMPILE) $(abspath ${<}) -o ${@}
Index: src/tests/Makefile.in
===================================================================
--- src/tests/Makefile.in	(revision e10537a92aeae4971ee59bb0c7bc9cb43319fc90)
+++ src/tests/Makefile.in	(revision 4f18de345b577edd78d514049636511fccecfac1)
@@ -309,4 +309,12 @@
 fstream_test_SOURCES = fstream_test.c
 avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
+
+# SKULLDUGGERY like libcfa/Makefile.am prevent extensionless headers from being generated
+# however, here it is more complicated because it must match the dependencies exactly
+# depencies seem to have the absolute path to the build directory and relative path
+# to the headers from there
+headers = $(shell find $(top_srcdir)/src/libcfa -type f ! -name "*.*")
+headers_real = $(shell realpath --relative-to=$(top_builddir) $(headers))
+headers_deps = $(addprefix $(abs_top_builddir)/, $(headers))
 all: all-am
 
@@ -626,5 +634,8 @@
 concurrency :
 	@+${TEST_PY} --debug=${debug} -Iconcurrent
-
+$(headers_deps) :
+	echo "Dummy rule, should never be called"
+
+# implicit rule so not all test require a rule
 % : %.c $(CC)
 	$(COMPILE) $(abspath ${<}) -o ${@}
