# Beispiel eines Makefiles
# ------------------------
# Zeilen mit # sind Kommentar
# Man definiert sich einige Variable (=Zeichenketten)

# Name des zu erzeugenden ausfuehrbaren Programms
PROG = helloworld.LINUX

# Name des Compilers:
F77 = gfortran

# Compiler-Optionen (hier keine)
FFLAGS =

# Linker-Optionen (hier keine)
LDFLAGS =

# Liste aller Objektfiles (hier nur eines)
OBJECTS = HelloWorld.o
# Variante mit zwei einzelnen Quellen fuer Haupt- und Unterprogramm:
# OBJECTS = Hello.o World.o


# Die erste Zeile mit einem ":" definiert ein Standard-Target
# (=Ergebnis, das beim Aufruf von make gewuenscht wird)
# hinter dem Doppelpunkt stehen die Files, die dazu benoetigt
# werden, darunter die Kommandos zum Erzeugen/Aktualisieren
# des vor dem Doppelpunkt angegebenen Targets.
# WICHTIG:  Einrueckung durch Tabulator, nicht Leerzeichen

$(PROG):  $(OBJECTS)
	$(F77) -o $@ $(OBJECTS) $(LDFLAGS)

# Standardregeln zum Erzeugen bestimmter Files
#  ".f.o" definiert, was zu tun ist, wenn ein .o-File
# gebraucht wird, und ein gleichnamiges File mit der
# Endung .f vorhanden ist.

.SUFFIXES: .f .o

.f.o:
	$(F77) -c $(FFLAGS) $<
	
# Anstelle dieser Schreibweise kann man auch folgende verwenden:
# %.o:   %.f Makefile
# 	$(F77) -c $(FFLAGS) $<
# dabei ist die Angabe von "Makefile" nicht notwendig, wuerde 
# aber dazu fuehren, dass alle Quellen neu uebersetzt werden,
# nachdem am Makefile etwas geaendert wurde.
	
# Oft moechte man eine einfache Moeglichkeit haben, ein
# Verzeichnis wieder aufzuraeumen - das geht z.B. mit 
# "make clean"
clean:
	rm $(PROG) *.o