-CGENDEP := $(strip $(CC) -MM -MG $(CXXFLAGS) $(CFLAGS)) $BASE.c
-CGENDEP += | sed -e 's@^.*\.o:@@'
-CGENDEP += | tr '\\' ' '
+#Sources are found in any CMODULE subdir
+CSRC ?= $(wildcard $(patsubst %,%/*.c,$(CMODULES)))
+#Output format suffix
+COBJSUF ?= .o
+#Architecture
+CARCH ?= $(shell uname -m)
+#Application suffix
+APPSUF ?= .$(CARCH)
+#C binary distribution directory
+CDISTDIR ?= $(DISTDIR)
+#Directory for C binary/executable output files
+CBINDIR ?= $(CDISTDIR)/bin
+#Set up the final C build targets
+CTARG ?= $(CSRC:.c=$(COBJSUF))
+
+#Set of shell functions used to determine dependencies
+#for building each c source file
+#$BASE is a keyword replaced in the main Makefile iteratively
+#for each source file.
+CDPIPE ?= $(strip $(CC)) -MM -MG $(CXXFLAXS) $(CFLAGS) $BASE.c
+CDSED ?= sed -e 's@^.*\.o:@@'
+CDTR ?= tr '\\' ' '
+#The shell command to execute and evaluate for deps
+CDEPSCOMMAND ?= $(CDPIPE) | $(CDSED) | $(CDTR)
+
+#Set of shell functions used to determine the
+#name of each library the compiler/LD can't find
+LDPIPE ?= $(CC) $(patsubst %,-l%,$(CLIBS)) 2>&1 >/dev/null
+LDGREP ?= grep "cannot find"
+LDSED ?= sed -e 's@^.*cannot find -l\([a-zA-Z0-9\.]*\).*@\1@g'
+#Calculate missing libs
+MISSINGLIBS ?= $(strip $(shell $(LDPIPE) | $(LDGREP) | $(LDSED)))