# Makefile fuer den Test-Build fuer eine Windows- oder Linux-Plattform


# Erster Test Makefile

# Fuer .o-File-Sourcen: Dateien in PROJECT gehen vor gleichnamige Dateien in COMMON
VPATH = \
..\
../src0\


OFILES = main.o\
	a.o\

# Dateien, bei denen es auf den Pfad ankommt, weil die Sourcen
# mehrmals existieren
CFILES = \



# Alle Verzeichnisse von VPATH fuer Includes durchsuchen
INC_PARAMS=$(foreach d, $(VPATH), -I$d)




# Unterscheidung Windows/Linux
ifdef SystemRoot
  # Build auf Windows-System fuer Windows
  
  CC=gcc
  RM=del

  #CFLAGS = -g -pg -Wall -Wextra -Wpedantic -std=c99\
  #-Wsign-conversion -DGLCD_FRAMEBUFFER -DPLATFORM_PC 
  CFLAGS = 
  
  # Flags, um SDL2 korrekt zuzulinken. Die Reihenfolge ist wichtig.
  # LFLAGS = -lmingw32 -lSDL2main -llibSDL2  
  LFLAGS = 
  
  # Unter Windows darf das "ECHO"-Kommando keine Anfuehrungszeichen haben.
  ECHOQUOTE = 
  
  
  OUT_EXE = buildtest.exe
  
else
  # Build auf Linux-System fuer Linux
  
  CC=clang
  RM=rm -f

  CFLAGS = -ggdb -Wall -Wextra -pedantic -Wno-invalid-source-encoding \
  -std=c99\
  -DGLCD_FRAMEBUFFER -DPLATFORM_PC `sdl2-config --cflags --libs`

  #Fuer Clang
  #CFLAGS = -ggdb -Wall -Wextra -pedantic \
  #-DGLCD_FRAMEBUFFER `sdl2-config --cflags --libs` \
  #-Wno-invalid-source-encoding 
  
  # entfernte Flags:
  #-Qunused-arguments


  LFLAGS = `sdl2-config --libs`

  # Unter Linux braucht das "ECHO"-Kommando Trennzeichen, ansonsten wuerde es
  # Kommentarzeichen als solche interpretieren.
  ECHOQUOTE = '
  
  OUT_EXE = unittest
  
endif




$(OUT_EXE): $(OFILES)
	$(CC) $(CFLAGS) $(LFLAGS) -o $@ $^


%.o: %.c
	@echo $(value CC)
	@echo $(value CFLAGS)
	$(CC) $(INC_PARAMS) $(CFLAGS) -c -o $@ $<
		
		
# build0: $(CFILES) $(OFILES)
#	$(CC) $< $(OFILES) -o $(CFLAGS) -DUNITTEST_ENABLED=0 $(LFLAGS) -o $(OUT_EXE) $(CFILES) 

#build: $(CFILES) $(OFILES)
#	$(CC) -I"../src0" $c $< -o $@
   
	
.PHONY: clean
clean:
	$(RM) *.o *.d
	$(RM) $(OUT_EXE)
	
.PHONY: rebuild 
rebuild: clean ${OUT_EXE}


.PHONY: run 
run: $(OUT_EXE)
	./${OUT_EXE}


FORCE:
