# --- Inizio di Makefile ---

# Struttura generale di un Makefile per programmi in C

# targets generali:
#
# all : target di default, equivale alla creazione del file exe
#       principale. Vengono compilati i file sorgente nei relativi
#       codici oggetto che vengono poi linkati assieme nel file
#       eseguibile principale.
#
# srczip : crea un archivio zip con il Makefile, tutti i file .c,
#          tutti i file .h contenuti nella directory corrente e i
#          file di testo contenenti le note legali e quant'altro
#
# binzip : crea un archivio zip con il file exe principale e i file
#          di testo contenenti le note legali e quant'altro.
#          Se necessario quest'ultimo viene creato con l'apposito
#          target.
#
# veryclean : esegue il target clean e in piu` cancella l'exe
#             principale e gli archivi eventualmente presenti.
#
# clean : cancella i file .o presenti nella directory corrente.

# compilatore C con sintassi compatibile con GCC
cc = gcc

# programma di archiviazione con sintassi compatibile con PKZIP
zip = pkzip

# nome dell'eseguibile principale.
mainexename = ewsnake.exe

# radice del nome degli archivi. verra` aggiunta una lettera che
# specifica il tipo di file contenuti nell'archivio.
archbasename = ewsnake05

# elenco dei file oggetto da generare e linkare.
objs = main.o gui.o gfx.o game.o config.o

# header che interessano i file sorgenti del progetto.
headers = defs.h

# file di testo da allegare agli archivi compressi
texts = Readme.txt License.txt Licenza.txt

# argomenti della riga di comando da passare al compilatore in fase
# di compilazione.
cflags = -Wall -c -s -O3

# argomenti della riga di comando da passare al compilatore in fase
# di linking.
lflags = -Wall -s -lalleg -O3

# argomenti della riga di comando da passare al programma di
# archiviazione per la generazione degli archivi compressi.
zflags = -exx

all : $(mainexename)

srczip : $(texts) Makefile
	$(zip) $(archbasename)s.zip *.c *.h Makefile $(texts) $(zflags)

binzip : $(mainexename) $(texts)
	$(zip) $(archbasename)b.zip $(mainexename) $(texts) $(zflags)

veryclean : clean
	del $(mainexename)
	del $(archbasename)s.zip
	del $(archbasename)b.zip

clean : 
	del *.o

$(mainexename) : $(objs)
	$(cc) $(objs) -o $@ $(lflags)
	strip $(mainexename)
	
%.o : %.c $(headers)
	$(cc) $< -o $@ $(cflags)

# --- Fine di Makefile ---