CC=g++
CFLAGS=-Wall -pedantic -g -O0 -std=c++11 -I./SFML-2.2/include 
LDFLAGS = -L./SFML-2.2/lib
LIBS = -lsfml-graphics -lsfml-window -lsfml-system

compile: SimOS

compile_teachers_app:
	$(CC) -Wall -pedantic -std=c++11 teachers_app.cpp -o SimOS_teachers_app

run: 
	export LD_LIBRARY_PATH=./SFML-2.2/lib && ./SimOS

testrun:
	export LD_LIBRARY_PATH=./SFML-2.2/lib && ./SimOS test

SimOS:  main.o CTask.o CGenerator.o CTaskLine.o CRunningTasks.o CComputer.o CMemory.o CProcessor.o CCore.o CButton.o CCoreView.o CCoreSetView.o CGameGUI.o CMathHelp.o CMemoryView.o CTaskRunningView.o CTaskListRunningView.o CTaskListSpawnedView.o CTaskListView.o CTaskSpawnedView.o CTaskView.o CPlayButtonView.o CDependencyView.o
	$(CC) $(CFLAGS) CTask.o main.o CGenerator.o CTaskLine.o CRunningTasks.o CComputer.o CMemory.o CProcessor.o CCore.o CButton.o CCoreView.o CCoreSetView.o CGameGUI.o CMathHelp.o CMemoryView.o CTaskRunningView.o CTaskListRunningView.o CTaskListSpawnedView.o CTaskListView.o CTaskSpawnedView.o CTaskView.o CPlayButtonView.o CDependencyView.o -o SimOS $(LDFLAGS) $(LIBS)
	
main.o: main.cpp CButton.o CTaskSpawnedView.o CTaskListRunningView.o CTaskListSpawnedView.o CMemoryView.o CCoreView.o CGameGUI.o
	$(CC) -c $(CFLAGS) main.cpp 
	
CTask.o: CTask.cpp CTask.h  
	$(CC) -c $(CFLAGS) CTask.cpp 
	
CGenerator.o: CGenerator.cpp CGenerator.h CTask.o
	$(CC) -c $(CFLAGS) CGenerator.cpp 
	
CTaskLine.o: CTaskLine.cpp CTaskLine.h CGenerator.o
	$(CC) -c $(CFLAGS) CTaskLine.cpp 
	
CRunningTasks.o: CRunningTasks.cpp CRunningTasks.h CTask.o
	$(CC) -c $(CFLAGS) CRunningTasks.cpp 
	
CComputer.o: CComputer.cpp CComputer.h CMemory.o CProcessor.o CRunningTasks.o CTaskLine.o TTime.h
	$(CC) -c $(CFLAGS) CComputer.cpp 

CMemory.o: CMemory.cpp CMemory.h 
	$(CC) -c $(CFLAGS) CMemory.cpp 
	
CProcessor.o: CProcessor.cpp CProcessor.h CCore.o
	$(CC) -c $(CFLAGS) CProcessor.cpp 

CCore.o: CCore.cpp CCore.h
	$(CC) -c $(CFLAGS) CCore.cpp 

CButton.o: GUI/CButton.cpp GUI/CButton.h GUI/IDrawable.h CMathHelp.o
	$(CC) -c $(CFLAGS) GUI/CButton.cpp 
	
CCoreView.o: GUI/CCoreView.cpp GUI/CCoreView.h CButton.o
	$(CC) -c $(CFLAGS) GUI/CCoreView.cpp 
	
CCoreSetView.o: GUI/CCoreSetView.cpp GUI/CCoreSetView.h	CCoreView.o CComputer.o
	$(CC) -c $(CFLAGS) GUI/CCoreSetView.cpp 
	
CGameGUI.o: GUI/CGameGUI.cpp GUI/CGameGUI.h CMemoryView.o CCoreSetView.o CTaskListRunningView.o CTaskListSpawnedView.o CComputer.o	
	$(CC) -c $(CFLAGS) GUI/CGameGUI.cpp 
	
CMathHelp.o : GUI/CMathHelp.cpp GUI/CMathHelp.h	
	$(CC) -c $(CFLAGS) GUI/CMathHelp.cpp 

CMemoryView.o: GUI/CMemoryView.cpp GUI/CMemoryView.h CButton.o CComputer.o
	$(CC) -c $(CFLAGS) GUI/CMemoryView.cpp 

CTaskRunningView.o: GUI/CTaskRunningView.cpp GUI/CTaskRunningView.h CTaskView.o
	$(CC) -c $(CFLAGS) GUI/CTaskRunningView.cpp
	
CTaskListRunningView.o: GUI/CTaskListRunningView.cpp GUI/CTaskListRunningView.h CTaskListView.o CTaskRunningView.o CComputer.o
	$(CC) -c $(CFLAGS) GUI/CTaskListRunningView.cpp
	
CTaskListSpawnedView.o: GUI/CTaskListSpawnedView.cpp GUI/CTaskListSpawnedView.h	CTaskListView.o CTaskSpawnedView.o CComputer.o
	$(CC) -c $(CFLAGS) GUI/CTaskListSpawnedView.cpp
	
CTaskListView.o: GUI/CTaskListView.cpp GUI/CTaskListView.h CTaskSpawnedView.o GUI/IDrawable.h CComputer.o	
	$(CC) -c $(CFLAGS) GUI/CTaskListView.cpp
	
CTaskSpawnedView.o: GUI/CTaskSpawnedView.cpp GUI/CTaskSpawnedView.h CTaskView.o
	$(CC) -c $(CFLAGS) GUI/CTaskSpawnedView.cpp
	
CTaskView.o: GUI/CTaskView.cpp GUI/CTaskView.h CButton.o	
	$(CC) -c $(CFLAGS) GUI/CTaskView.cpp
	
CPlayButtonView.o: GUI/CPlayButtonView.cpp GUI/CPlayButtonView.h GUI/IDrawable.h CMathHelp.o
	$(CC) -c $(CFLAGS) GUI/CPlayButtonView.cpp

CDependencyView.o: GUI/CDependencyView.cpp GUI/CDependencyView.h GUI/IDrawable.h
	$(CC) -c $(CFLAGS) GUI/CDependencyView.cpp
	
compile_teachers_app: SimOS_ucitelska_aplikace

SimOS_ucitelska_aplikace: teachers_app.cpp
	$(CC) teachers_app.cpp -pedantic -Wall -std=c++11 -o SimOS_ucitelska_aplikace
	
clean:
	rm -rf *.o
	
cleanall: 
	rm -rf *.o SimOS data/score SimOS_teachers_app
