One way would be to build a script to check for the .gz and uncompress it if present, and then run make. However, I'm thinking you want to just use make.
As you may know make is very much keyed to the timestamp of files when determining what it needs to do. So by making a dependency on a file that is contained in the .gz and keeping the .gz around after gunzip we can setup a solution. I'm guessing that the .gz will contain source code. Here is what I came up with.
Code:
#
# Makefile with a dependency on a .gz file
#
CC = gcc
hello: hello.c
${CC} -o ${@:.c=} $@.c
hello.c: hello.c.gz
cp -a hello.c.gz hello.c.kz
gunzip hello.c.gz
mv hello.c.kz hello.c.gz
The first target is hello and it has a dependency or prerequisite of hello.c. The second target of hello.c has a prerequisite of hello.c.gz. The commands will run only if the timestamp of hello.c.gz is > hello.c or hello.c does not exist. For this to work hello.c must be in the .gz file.
The first command, cp -a copies hello.c.gz to hello.c.kz (my notation, k for keep). The -a (archive) option will keep our timestamp intact. We have to make a copy because there isn't an option that I know of on gunzip to keep around the .gz file after unzipping. The -c option will keep the file, but sends the output to stdout. The second step is to unzip our file. The last step is to mv hello.c.kz back to its original name of hello.c.gz. Again we keep the timestamp of the .gz intact.
Bill