# Makefile for Lachesis
VERSION=0.2
CYEAR=2003
# Uncomment this to add debugging messages (spammy).
#DEFS=-DDEBUG
# Uncomment this to provide a default channel to join on connect.
#HIRCDEFS=-DDFL_IRCCHAN="\"\#dragoon's-birth\""

CC=gcc
CFLAGS=-g -O2

CXX=g++
CXXFLAGS=-g -O2

RM=rm -f
CP=cp -f

TARGET=lachesis
#INTOBJS=msgirc.o
INTOBJS=irc-native.o fdio.o
OBJS=version.o lachesis.o auth.o $(INTOBJS) irc.o log.o utils.o loaddata.o cmd/cmdmods.a
DEPS=cmdmods
EXTINTOBJS=-lutil
EXTOBJS=$(EXTINTOBJS)
HEADERS=alloc.h auth.h irc.h ircint.h lachesis.h loaddata.h irccl.h types.h utils.h cmd/root.h
CMDMODS=actions authcmd channel logcmd roll

all: build

build: $(TARGET)

clean:
	$(RM) $(TARGET) *.o version.c lachesis-ics
	cd cmd ; $(RM) Makefile
	cd cmd ; $(CP) Makefile.in Makefile
	cd cmd ; $(MAKE) clean

$(TARGET): $(OBJS) $(EXTOBJS)
	$(CXX) $(LDFLAGS) -o $(TARGET) $(OBJS) $(EXTOBJS)

version.o:
	rm -f version.c
	echo "const char * Lachesis_Version() {" >version.c
	echo -n "return \"" >>version.c
	echo -n $(VERSION) >>version.c
	echo "\";" >>version.c
	echo "}" >>version.c
	echo "const char * Lachesis_CYear() {" >>version.c
	echo -n "return \"" >>version.c
	echo -n $(CYEAR) >>version.c
	echo "\";" >>version.c
	echo "}" >>version.c
	$(CC) $(CFLAGS) $(DEFS) -o version.o -c version.c

lachesis.o: lachesis.cc $(HEADERS)
	$(CXX) $(CXXFLAGS) $(DEFS) -o lachesis.o -c lachesis.cc

auth.o: auth.cc $(HEADERS)
	$(CXX) $(CXXFLAGS) $(DEFS) -o auth.o -c auth.cc

log.o: log.cc $(HEADERS) log.h
	$(CXX) $(CXXFLAGS) $(DEFS) -o log.o -c log.cc

irc.o: irc.cc $(HEADERS) log.h
	$(CXX) $(CXXFLAGS) $(DEFS) $(HIRCDEFS) -o irc.o -c irc.cc

msgirc.o: msgirc.c $(HEADERS)
	$(CC) $(CFLAGS) $(DEFS) -o msgirc.o -c msgirc.c

irc-native.o: irc-native.c fdio.h $(HEADERS)
	$(CC) $(CFLAGS) $(DEFS) -o irc-native.o -c irc-native.c

fdio.o: fdio.c alloc.h
	$(CC) $(CFLAGS) $(DEFS) -o fdio.o -c fdio.c

utils.o: utils.c utsep.c $(HEADERS)
	$(CC) $(CFLAGS) $(DEFS) -o utils.o -c utils.c

loaddata.o: loaddata.cc $(HEADERS)
	$(CXX) $(CXXFLAGS) $(DEFS) -o loaddata.o -c loaddata.cc

cmd/cmdmods.a: cmdmods

cmdmods: $(HEADERS) cmd/Makefile
	$(MAKE) -C cmd cmdmods.a

cmd/Makefile: cmd/mkmoddep cmd/Makefile.in
	cd cmd ; ./mkmoddep $(CMDMODS)
