#
# Projekt: ART1 - Makefile
# Version: r5
# Organisation: Institut für Automatisierungstechnik
# Autor: M.Herhold
# Datum: 2017 - 2025

# Nutzung dieses Makefiles um den Quellcode zu kompilieren:
#  1.) geben Sie auf der Kommandozeile "make" oder "make all" ein um die hier aufgeführten Quellcode-Dateien zu einem Programm zu compilieren.
#  2.) geben Sie auf der Kommandozeile "make run" ein um das, erfolgreich compilierte, Programm in einem separaten Terminal zu starten
#	alternativ kann auch das erstellte Binary über die Kommandozeile aufgerufen werden, mit: "./_tuersteuerung"
#  3.) geben Sie auf der Kommandozeile "make clean" ein um das Projektverzeichnis aufzuräumen und somit alle generierten Dateien zu löschen

# Hinweise: zum Erweitern des Projekts um zusätzliche Quellcode- und Header-Dateien
#  tragen Sie hier alle Ihre Quellcode Dateien [inklusive (zum Makefile) relativer Pfadangabe] ein.
#  Beachten Sie dabei:
#   entweder
#     1.1) schreiben Sie alle Dateinamen auf eine Zeile
#     1.2) trennen sie die Dateinamen durch ein Leerzeichen voneinander
#   oder
#     2.1) Sie schließen jede Zeile mit einem '\' ab.
#     2.2) Achten Sie sehr genau darauf, dass nach dem '\' keine weiteren Zeichen folgen, auch keine Leerzeichen!
#     2.3) rücken Sie die Dateinamen in jeder neuen Zeile mit einem <TAB> ein!

# Liste der Quelldateien. Diese Liste anpassen, wenn Sie Dateien zum Projekt hinzufügen/entfernen.
SOURCES := door-interface.c simulator-sdl2.c Library/niusb6501.c \
	   main.c \


# Liste der zugehörigen Include Dateien. Diese Liste anpassen, wenn Sie Dateien zum Projekt hinzufügen/entfernen.
INCLUDES := door-interface.h simulator-sdl2.h Library/niusb6501.h

#
# nachfolgende Teile des Makefiles benötigen in der Regel keine Änderungen für den Praktikumsversuch:
#

# aus Quelldateien resultierende Objektdateien
OBJS := $(SOURCES:.c=.o)
DEPS := $(SOURCES:.c=.d)
# benötigte externe Bibliotheken
LIBS := -lm -lusb -lSDL2 -lSDL2_ttf -lSDL2_image
# zu erzeugendes Programm
BINARY := _tuersteuerung

# Compilerflags, Debugging-Symbole, keine Optimierung, alle Warnings
CFLAGS := -g3 -O0 -Wall -Wundef -fmessage-length=0 -DT3

# extrahiere Informationen über Abhängigkeiten der Quellcodedateien untereinander
%.d: %.c
	@$(CC) -MM $< -MF $@

# erzeuge die Objektdateien aus den Quelldateien
%.o: %.c %.d Makefile
	$(CC) $(CFLAGS) -c $< -o $@

# das gewünschte Programm aus den Einzelteilen zusammenfügen
$(BINARY): $(DEPS) $(OBJS)
	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LIBS) -o $@

# gewünschtes Ziel, wenn make ohne Kommandozeilenparameter aufgerufen wird
all: $(BINARY)

run: ${BINARY}
	@xterm -geometry 83x27 -e "./${BINARY}; echo 'press enter to continue'; read"

# Aufräumarbeiten:
clean:
	-rm -f $(BINARY)
	-rm -f $(OBJS)
	-rm -f $(DEPS)

.suffixes: .c .o .d 
.phony: all clean run

-include $(DEPS)
