Te voy a dejar un par de links que te van a servir.
Primero, no vayas a confundir un makefile con un script.
Segundo, el makefile es un archivo especial que si se usa con el comando de bash make te sirve para compilar/recompilar proyectos de manera muy sencilla. Es importante que tengas en cuenta que cuando se recompila mediante un makefile, se evalua que archivos fueron modificados y dichos archivos se vuelven a compilar; pero no se vuelve a compilar todo el proyecto (considerando que fue al menos previamente compilado). Para ser mas claro, una vez que fue compilado el proyecto (en el caso de realizarse cambios) solamente se vuelven a compilar los archivos que fueron modificados. Para ello se ayuda con la información de metadata que se incluye en los archivos, fíjate que hay un apunte de Furfaro que explica bastante bien Linux en general
Por otra parte un makefile no solo lo podes usar para compilar, sino para incluir directivas para el compilador o incluso para darle mas funcionalidad a la compilación. Por ejemplo si vos queres adjuntar librerías estáticas en un directorio en particular, se puede agregar mediante líneas.
El makefile es una herramienta poderosa que contas en Linux. Acordate aparte que tenes dos maneras sencillas de declarar tu archivo para ser usado mediante el comando make; mediante los nombres: makefile o Makefile. Se pueden usar otros nombres por si te interesa, pero no viene al caso ahora.
Generalmente la estructura que vas a encontrar es como la que te paso Feer, o bien algunas mas sencillas como las que te puse en las paginas web. No es obligatorio usar esa estructura, pero mantiene un sentido de ordenamiento y lógica que es bueno seguir.
Hay algunos símbolos como $, #, etc que son particulares en el makefile. El $ te permite reemplazar dentro de las líneas que especifiques mediante un $, lo que tengas declarado al inicio del makefile. Un clásico es:
CC=gcc
y en alguna parte poner $(CC). Es por comodidad, para poder cambiar rápidamente el compilador a la hora de usar el makefile.
El # te permite escribir líneas de comentario:
#Esto es un comentario
Esto no es un comentario
Después tenes mas directivas que seria bueno que investigaras, no son mas particulares que las que usas dentro de Linux.
Estas paginas te pueden servir (salen en la primer pagina de google, si te pones a buscar). De hecho es lo primero que tenes que acostumbrarte a hacer, si no entendes en google ponelo que es tu mejor amigo:
http://mrbook.org/tutorials/make/
http://www.cs.colby.edu/maxwell/courses/...maketutor/
http://www.ntu.edu.sg/home/ehchua/progra..._make.html
Y te dejo unos ejemplos de makefile que use para Informatica 1.
Al archivo que dice makefile(1) quitale el (1), Windows choto que me trae conflicto con archivos que no me diferencia mayúsculas de minúsculas.
ACLARACIONES:
Con respecto al makefile que te paso Feer. Cuidado con la etiqueta clean; no te vayas a olvidar de modificar el * o sino te vas a borrar todos los archivos objeto que tengas en tu carpeta donde este el makefile. Esto te lo aclaro porque el * representa cualquier cosa, puede ser para definir un path, un nombre o la mitad de lo que quieras. Generalmente no hay problema en borrar todos los archivo objetos, pero tenelo en cuenta.
El comando echo me imagino que lo conoceras, sino hace justamente lo que significa el comando.
El prefijo @ suele no ser necesario, tenelo en cuenta por si te trae conflictos.