build: Further Makefile refactoring
build: Don't use subshells

It is no longer necessary to spawn subshells for each target.
build: Validate the HASH_SIZE before compiling