SRCDIR = ./src/
OBJDIR = ./work/
BUILD = garnax-f1.1
TARFILE = $(BUILD).tar
CC = gcc

# Note: -lpthread may be needed instead of -pthread
#CFLAGS = -Wall -pedantic -ansi -pthread -g
CFLAGS = -Wall -pthread -g

# Arguments for SunOS
# CC = cc
# CFLAGS = -mt -lsocket -lnsl -lpthread

objects = $(OBJDIR)general.o $(OBJDIR)structs.o $(OBJDIR)uptime.o $(OBJDIR)readcfg.o $(OBJDIR)raws.o $(OBJDIR)parse.o $(OBJDIR)routine.o $(OBJDIR)fserve.o $(OBJDIR)main.o 

all : garnax

install : garnax

garnax : work $(objects)
	$(CC) $(CFLAGS) $(objects) -o garnax 

work : 
	mkdir -p work
	chmod 755 bot.checkup
	chmod 700 .
	chmod 600 *.conf

depend :
	gcc -E -MM $(SRCDIR)*.c > .depend

clean :
	if [ -e $(OBJDIR) ] ; then rm -rf $(OBJDIR) ; fi
	if [ -e garnax ] ; then rm garnax ; fi

tar : 
	cd ..; tar -cf $(TARFILE) $(BUILD)/src
	cd ..; tar -rf $(TARFILE) $(BUILD)/Makefile
	cd ..; tar -rf $(TARFILE) $(BUILD)/README
	cd ..; tar -rf $(TARFILE) $(BUILD)/bot.checkup
	cd ..; tar -rf $(TARFILE) $(BUILD)/*.conf
	cd ..; gzip $(TARFILE)

$(OBJDIR)general.o : $(SRCDIR)headers.h $(SRCDIR)general.h $(SRCDIR)general.c
	$(CC) -c $(CFLAGS) -o $(OBJDIR)general.o $(SRCDIR)general.c 

$(OBJDIR)fserve.o : $(OBJDIR)structs.o $(SRCDIR)fserve.h $(SRCDIR)fserve.c
	$(CC) -c $(CFLAGS) -o $(OBJDIR)fserve.o $(SRCDIR)fserve.c 

$(OBJDIR)main.o : $(OBJDIR)routine.o $(SRCDIR)main.c 
	$(CC) -c $(CFLAGS) -o $(OBJDIR)main.o $(SRCDIR)main.c

$(OBJDIR)parse.o : $(OBJDIR)raws.o $(OBJDIR)uptime.o $(OBJDIR)fserve.o $(SRCDIR)parse.h $(SRCDIR)parse.c
	$(CC) -c $(CFLAGS) -o $(OBJDIR)parse.o $(SRCDIR)parse.c 

$(OBJDIR)raws.o : $(OBJDIR)fserve.o $(SRCDIR)raws.h $(SRCDIR)raws.c
	$(CC) -c $(CFLAGS) -o $(OBJDIR)raws.o $(SRCDIR)raws.c 

$(OBJDIR)readcfg.o : $(OBJDIR)fserve.o $(SRCDIR)readcfg.h $(SRCDIR)readcfg.c
	$(CC) -c $(CFLAGS) -o $(OBJDIR)readcfg.o $(SRCDIR)readcfg.c 

$(OBJDIR)routine.o : $(OBJDIR)parse.o $(SRCDIR)routine.h $(SRCDIR)routine.c
	$(CC) -c $(CFLAGS) -o $(OBJDIR)routine.o $(SRCDIR)routine.c 

$(OBJDIR)structs.o : $(OBJDIR)general.o $(SRCDIR)structs.h $(SRCDIR)structs.c
	$(CC) -c $(CFLAGS) -o $(OBJDIR)structs.o $(SRCDIR)structs.c 

$(OBJDIR)uptime.o : $(OBJDIR)structs.o $(SRCDIR)uptime.h $(SRCDIR)uptime.c
	$(CC) -c $(CFLAGS) -o $(OBJDIR)uptime.o $(SRCDIR)uptime.c 


