To answer (or provide a solution) my own issue, it works now.
I simply added the my-compile extract directly as a c-mode-hook e.g
,----
| (add-hook 'c-mode-common-hook
| (lambda ()
| (unless (or (file-exists-p "makefile")
| (file-exists-p "Makefile"))
| (set (make-local-variable 'compile-command)
| ;; $(CC) -c -o $@ $(GTKFLAGS) $(CPPFLAGS) $(CFLAGS) $<
| (let ((file (file-name-nondirectory buffer-file-name)))
| (format "%s -o %s %s %s %s %s"
| (or (getenv "CC") "gcc")
| (file-name-sans-extension file)
| (or (getenv "GTKFLAGS") "")
| (or (getenv "CPPFLAGS")"-DDEBUG=9")
| (or (getenv "CFLAGS") "-std=c99 -pedantic -Wall -Werror
-Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes
-Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -g")
| file)))))
| )
`----
Which suggests something strange with make-local-variable?