Each command runs in its own subshell, so variables can’t survive from one command to the next. Put them on the same line and they’ll work:
build:
@read -p "Enter Module Name:" module; \
module_dir=./modules/$$module; \
mkdir -p $$module_dir/build