diff --git a/Makefile.diag.inc b/Makefile.diag.inc
new file mode 100644
index 0000000000000000000000000000000000000000..7b6031f0ff54e288d5a98850312befd86c0cd883
--- /dev/null
+++ b/Makefile.diag.inc
@@ -0,0 +1,5 @@
+DIAG_WALL_CFLAGS = -Waddress -Warray-bounds=1 -Warray-compare -Warray-parameter=2 -Wbool-compare -Wbool-operation -Wchar-subscripts -Wcomment -Wdangling-pointer=2 -Wduplicate-decl-specifier -Wenum-compare -Wenum-int-mismatch -Wformat -Wformat-overflow -Wformat-truncation -Wint-in-bool-context -Wimplicit -Wimplicit-int -Wimplicit-function-declaration -Winit-self -Wlogical-not-parentheses -Wmain -Wmaybe-uninitialized -Wmemset-elt-size -Wmemset-transposed-args -Wmisleading-indentation -Wmismatched-dealloc -Wmismatched-new-delete -Wmissing-attributes -Wmissing-braces -Wmultistatement-macros -Wnarrowing -Wnonnull -Wnonnull-compare -Wopenmp-simd -Wparentheses -Wpessimizing-move -Wpointer-sign -Wrange-loop-construct -Wreorder -Wrestrict -Wreturn-type -Wsequence-point -Wsign-compare -Wsizeof-array-div -Wsizeof-pointer-div -Wsizeof-pointer-memaccess -Wstrict-aliasing -Wstrict-overflow=1 -Wswitch -Wtautological-compare -Wtrigraphs -Wuninitialized -Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -Wuse-after-free=3 -Wvla-parameter -Wvolatile-register-var -Wzero-length-bounds
+
+DIAG_CFLAGS = $(DIAGNOSTIC_WALL_CFLAGS) -Wshadow -Wdouble-promotion -Wformat=2 -Wundef -fno-common -Wconversion -Wstrict-prototypes -Wno-declaration-after-statement
+
+DIAG_ERROR_CFLAG
\ No newline at end of file
diff --git a/libdsl/Makefile b/libdsl/Makefile
index a749eb569feaaeaa963c08eb3fddbd308ca18b2d..01004ef0b580761cd8c9074c48b1fdecaf4b8c2b 100644
--- a/libdsl/Makefile
+++ b/libdsl/Makefile
@@ -1,5 +1,8 @@
+-include ../Makefile.diag.inc
+
 LIBDSL = libdsl.so
 
+CFLAGS += $(DIAG_CFLAGS) -Werror
 HEADER_DEPS := xdsl.h common.h xtm.h
 
 ifeq ($(PLATFORM),BROADCOM)
diff --git a/libeasy/Makefile b/libeasy/Makefile
index a353bf0624f3181f6ed1aa3169e845cd180f915d..d4d8d3e9d6cebf6648323f1dbe01bf72f0361dc1 100644
--- a/libeasy/Makefile
+++ b/libeasy/Makefile
@@ -1,5 +1,7 @@
-
 CC = gcc
+
+-include ../Makefile.diag.inc
+CFLAGS += $(DIAG_CFLAGS) -Werror
 #CFLAGS += -O2 -Wall -g -fvisibility=hidden
 
 LIBEASY_CFLAGS = -fvisibility=hidden
diff --git a/libethernet/Makefile b/libethernet/Makefile
index a3b7b71096e85492aa0f94f734650ae15fa405d8..b5363db27e50648e2ca09f910b46311d02351d56 100644
--- a/libethernet/Makefile
+++ b/libethernet/Makefile
@@ -1,5 +1,7 @@
 CC = gcc
-CFLAGS = -O2 -Wall -g
+
+-include ../Makefile.diag.inc
+CFLAGS = -O2 -g $(DIAG_CFLAGS) -Werror
 
 LIBETH_CFLAGS += -I. -I../libeasy
 LIBETH_LDFLAGS += -L../libeasy
diff --git a/libqos/Makefile b/libqos/Makefile
index c7ce16f6ee2d35a2773e02858d2e5a3b9e841dfa..2093ec78e7c86e788ec15fcc34adb8cfc0d5eb4c 100644
--- a/libqos/Makefile
+++ b/libqos/Makefile
@@ -1,5 +1,7 @@
 CC = gcc
-CFLAGS = -O2 -Wall -g
+
+-include ../Makefile.diag.inc
+CFLAGS = -O2 -g $(DIAG_CFLAGS) -Werror
 
 LIBQOS_CFLAGS += -I./include -I../libeasy
 LIBQOS_LDFLAGS += -L../libeasy
diff --git a/libwifi/Makefile b/libwifi/Makefile
index 200ab9657c3bc843266152b07c54582c51efb1dc..e06562c38329a333d78abf0c1cd74e0bac51b8c0 100644
--- a/libwifi/Makefile
+++ b/libwifi/Makefile
@@ -1,6 +1,8 @@
-
 CC ?= gcc
-CFLAGS += -O2 -Wall -g
+
+-include ../Makefile.diag.inc
+CFLAGS = -O2 -g $(DIAG_CFLAGS) -Werror
+
 LIBWIFI_CFLAGS += -I. -I../libeasy
 LIBWIFI_LDFLAGS += -L../libeasy