#############################################################################
# 	Makefile for building zasm
#############################################################################

CC            = gcc
CXX           = g++
DEFINES       = -DNDEBUG -DQT_NO_DEBUG
CFLAGS        = -pipe -O2 -Wall -W -D_REENTRANT -fPIE $(DEFINES)
CXXFLAGS      = -pipe -Wno-multichar -O2 -std=c++0x -Wall -W -Wno-deprecated-declarations -D_REENTRANT -fPIE -fsigned-char $(DEFINES)
INCPATH       = -I. -I.. -ISource -ILibraries -ILibraries/kio
LINK          = g++
LFLAGS        =
LIBS          = $(SUBLIBS) -lpthread -L/usr/lib/arm-linux-gnueabihf 


OBJECTS       = \
		Server.o \
		main.o \
		PushFolder.o \
		PullJob.o \
		Peer.o \
		IncludeList.o \
		DoneList.o \
		Client.o \
		DynDnsUpdater.o \
		log.o \
		errors.o \
		exceptions.o \
		Crypt.o \
		MersenneTwister64.o \
		md5_tools.o \
		md5.o \
		cstrings.o \
		base85.o \
		tempmem.o \
		pthreads.o \
		FD.o \
		files.o \
		UTF-8.o \
		Unicode.o \
		utilities.o \
		testbench.o \
		install.o


TARGET        = backup_daemon

first: 	all
all: 	Makefile $(TARGET)

$(TARGET):  $(OBJECTS)
	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)


####### Compile

UTF-8.o: Libraries/Unicode/UTF-8.cpp Libraries/Unicode/UTF-8.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o UTF-8.o Libraries/Unicode/UTF-8.cpp

Unicode.o: Libraries/Unicode/Unicode.cpp Libraries/Unicode/Unicode.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o Unicode.o Libraries/Unicode/Unicode.cpp

exceptions.o: Libraries/kio/exceptions.cpp Libraries/kio/exceptions.h 
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o exceptions.o Libraries/kio/exceptions.cpp

Server.o: Source/Server.cpp Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Source/Server.h \
		Source/Peer.h \
		Libraries/Templates/Array.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h \
		Libraries/Crypt/Crypt.h \
		Libraries/rng/MersenneTwister64.h \
		Source/PullJob.h \
		Libraries/unix/pthreads.h \
		Source/main.h \
		Source/IncludeList.h \
		Source/DoneList.h \
		Libraries/unix/files.h \
		Source/PushFolder.h \
		Libraries/hash/md5.h \
		Libraries/unix/tempmem.h \
		Libraries/hash/md5_tools.h \
		Libraries/hash/md5.h \
		Libraries/kio/kio.h \
		Source/Client.h \
		Libraries/unix/MyFileInfo.h \
		Libraries/cstrings/base85.h \
		Libraries/kio/peekpoke.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o Server.o Source/Server.cpp

main.o: Source/main.cpp Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/Array.h \
		Libraries/Templates/sort.h \
		Source/Peer.h \
		Libraries/Crypt/Crypt.h \
		Libraries/rng/MersenneTwister64.h \
		Source/PushFolder.h \
		Source/main.h \
		Source/IncludeList.h \
		Source/Server.h \
		Source/PullJob.h \
		Libraries/unix/pthreads.h \
		Source/DoneList.h \
		Libraries/unix/files.h \
		Libraries/hash/md5.h \
		Source/Client.h \
		Libraries/unix/MyFileInfo.h \
		Libraries/unix/tempmem.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o Source/main.cpp

PushFolder.o: Source/PushFolder.cpp Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Source/PushFolder.h \
		Libraries/Templates/Array.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h \
		Source/Peer.h \
		Libraries/Crypt/Crypt.h \
		Libraries/rng/MersenneTwister64.h \
		Source/main.h \
		Source/IncludeList.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o PushFolder.o Source/PushFolder.cpp

PullJob.o: Source/PullJob.cpp Source/PullJob.h \
		Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Source/Peer.h \
		Libraries/Templates/Array.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h \
		Libraries/Crypt/Crypt.h \
		Libraries/rng/MersenneTwister64.h \
		Libraries/unix/pthreads.h \
		Source/main.h \
		Source/IncludeList.h \
		Source/DoneList.h \
		Libraries/unix/files.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o PullJob.o Source/PullJob.cpp

Peer.o: Source/Peer.cpp Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Source/Peer.h \
		Libraries/Templates/Array.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h \
		Libraries/Crypt/Crypt.h \
		Libraries/rng/MersenneTwister64.h \
		Libraries/hash/md5_tools.h \
		Libraries/hash/md5.h \
		Libraries/kio/kio.h \
		Source/main.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o Peer.o Source/Peer.cpp

DynDnsUpdater.o: Source/DynDnsUpdater.cpp Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Source/Peer.h \
		Source/DynDnsUpdater.h \
		Libraries/Templates/Array.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h \
		Libraries/Crypt/Crypt.h \
		Libraries/rng/MersenneTwister64.h \
		Libraries/hash/md5_tools.h \
		Libraries/hash/md5.h \
		Libraries/kio/kio.h \
		Source/main.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DynDnsUpdater.o Source/DynDnsUpdater.cpp

testbench.o: Source/testbench.cpp Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Source/Peer.h \
		Source/DynDnsUpdater.h \
		Libraries/Templates/Array.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h \
		Libraries/Crypt/Crypt.h \
		Libraries/rng/MersenneTwister64.h \
		Libraries/hash/md5_tools.h \
		Libraries/hash/md5.h \
		Libraries/kio/kio.h \
		Source/main.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o testbench.o Source/testbench.cpp

install.o: Source/install.cpp Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Source/Peer.h \
		Source/DynDnsUpdater.h \
		Libraries/Templates/Array.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h \
		Libraries/Crypt/Crypt.h \
		Libraries/rng/MersenneTwister64.h \
		Libraries/hash/md5_tools.h \
		Libraries/hash/md5.h \
		Libraries/kio/kio.h \
		Source/main.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o install.o Source/install.cpp

utilities.o: Source/utilities.cpp Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Source/Peer.h \
		Source/utilities.h \
		Libraries/Templates/Array.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h \
		Libraries/Crypt/Crypt.h \
		Libraries/rng/MersenneTwister64.h \
		Libraries/hash/md5_tools.h \
		Libraries/hash/md5.h \
		Libraries/kio/kio.h \
		Source/main.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o utilities.o Source/utilities.cpp

IncludeList.o: Source/IncludeList.cpp Libraries/Templates/Array.h \
		Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h \
		Source/IncludeList.h \
		Libraries/Templates/sort.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o IncludeList.o Source/IncludeList.cpp

DoneList.o: Source/DoneList.cpp Source/DoneList.h \
		Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Libraries/Templates/Array.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h \
		Libraries/unix/pthreads.h \
		Libraries/unix/files.h \
		Libraries/unix/MyFileInfo.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DoneList.o Source/DoneList.cpp

Client.o: Source/Client.cpp Source/Client.h \
		Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Source/PullJob.h \
		Source/Peer.h \
		Libraries/Templates/Array.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h \
		Libraries/Crypt/Crypt.h \
		Libraries/rng/MersenneTwister64.h \
		Libraries/unix/pthreads.h \
		Source/main.h \
		Source/IncludeList.h \
		Source/DoneList.h \
		Libraries/unix/files.h \
		Libraries/hash/md5.h \
		Libraries/unix/MyFileInfo.h \
		Libraries/hash/md5_tools.h \
		Libraries/hash/md5.h \
		Libraries/kio/kio.h \
		Source/PushFolder.h \
		Libraries/unix/tempmem.h \
		Libraries/cstrings/base85.h \
		Libraries/Templates/sort.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o Client.o Source/Client.cpp

log.o: Libraries/unix/log.cpp Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o log.o Libraries/unix/log.cpp

errors.o: Libraries/kio/errors.cpp Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Libraries/unix/s_type.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o errors.o Libraries/kio/errors.cpp

Crypt.o: Libraries/Crypt/Crypt.cpp Libraries/hash/md5.h \
		Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Libraries/Crypt/Crypt.h \
		Libraries/rng/MersenneTwister64.h \
		Libraries/cstrings/base85.h \
		Libraries/kio/kio.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o Crypt.o Libraries/Crypt/Crypt.cpp

MersenneTwister64.o: Libraries/rng/MersenneTwister64.cpp Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Libraries/rng/MersenneTwister64.h \
		Libraries/hash/md5.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o MersenneTwister64.o Libraries/rng/MersenneTwister64.cpp

md5_tools.o: Libraries/hash/md5_tools.cpp Libraries/hash/md5_tools.h \
		Libraries/hash/md5.h \
		Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/kio/kio.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o md5_tools.o Libraries/hash/md5_tools.cpp

md5.o: Libraries/hash/md5.cpp Libraries/hash/md5.h \
		Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/kio/kio.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o md5.o Libraries/hash/md5.cpp

cstrings.o: Libraries/cstrings/cstrings.cpp Libraries/unix/tempmem.h \
		Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Libraries/cstrings/cstrings.h \
		Libraries/kio/kio.h \
		Libraries/Templates/Array.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o cstrings.o Libraries/cstrings/cstrings.cpp

base85.o: Libraries/cstrings/base85.cpp Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Libraries/cstrings/base85.h \
		Libraries/kio/kio.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o base85.o Libraries/cstrings/base85.cpp

tempmem.o: Libraries/unix/tempmem.cpp Libraries/unix/tempmem.h \
		Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tempmem.o Libraries/unix/tempmem.cpp

pthreads.o: Libraries/unix/pthreads.cpp Libraries/unix/pthreads.h \
		Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pthreads.o Libraries/unix/pthreads.cpp

FD.o: Libraries/unix/FD.cpp Libraries/Templates/Array.h \
		Libraries/kio/kio.h \
		config.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h \
		Libraries/unix/tempmem.h \
		Libraries/unix/FD.h \
		Libraries/kio/kio.h \
		Libraries/Templates/ADA.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o FD.o Libraries/unix/FD.cpp

files.o: Libraries/unix/files.cpp config.h \
		Libraries/kio/kio.h \
		Source/settings.h \
		Libraries/kio/standard_types.h \
		Libraries/kio/peekpoke.h \
		Libraries/unix/log.h \
		Libraries/kio/errors.h \
		Libraries/kio/error_emacs.h \
		Source/custom_errors.h \
		Libraries/cstrings/cstrings.h \
		Libraries/kio/peekpoke.h \
		Libraries/Templates/Array.h \
		Libraries/unix/FD.h \
		Libraries/unix/s_type.h \
		Libraries/Templates/sort.h \
		Libraries/Templates/ADA.h \
		Libraries/unix/tempmem.h \
		Libraries/unix/MyFileInfo.h \
		Libraries/unix/pthreads.h \
		Libraries/unix/files.h \
		Libraries/kio/kio.h
	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o files.o Libraries/unix/files.cpp



