CC=cc
CFLAGS=-I/usr/local/include -I./deps/
DEPS = bbs.h
JAMLIB = deps/jamlib/jamlib.a
ZMODEM = deps/Xmodem/libzmodem.a
LUA = deps/lua/liblua.a
ODOORS = deps/odoors/libs-`uname -s`/libODoors.a
JSMN = deps/jsmn/libjsmn.a
CDK = deps/cdk-5-20161210/libcdk.a

all: magicka magimail magiedit ticproc mgpost magichat fileapprove magiftpd

${LUA}:
	cd deps/lua && $(MAKE) -f Makefile freebsd MAKEFLAGS=
 
${JAMLIB}:
	cd deps/jamlib && $(MAKE) -f Makefile.linux MAKEFLAGS=
 
${ZMODEM}:
	cd deps/Xmodem && $(MAKE) MAKEFLAGS=

${ODOORS}:
	cd deps/odoors/ && $(MAKE)

$(JSMN):
	cd deps/jsmn/ && $(MAKE)

$(CDK):
	cd deps/cdk-5.0-20161210/ && export CPPFLAGS=-I/usr/local/include && ./configure --with-ncurses
	cd deps/cdk-5.0-20161210/ && $(MAKE)

OBJ =  inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o bluewave.o hashmap/hashmap.o
%.o: %.c $(DEPS)
	$(CC) -c -o $@ $< $(CFLAGS)

magicka: $(OBJ) ${LUA} ${JAMLIB} ${ZMODEM} ${JSMN}
	$(CC) -o magicka -o $@ $^ $(CFLAGS) -L/usr/local/lib -lsqlite3 -lutil -lm -lssl -lcrypto -lssh

magimail: $(JAMLIB)
	cd utils/magimail && $(MAKE) freebsd

magiedit: $(ODOORS)
	cd utils/magiedit && $(MAKE)

ticproc:
	cd utils/ticproc && $(MAKE)

magichat: $(JSMN)
	cd utils/magichat && $(MAKE)

mgpost: $(JAMLIB)
	cd utils/mgpost && $(MAKE)

fileapprove: $(CDK)
	cd utils/fileapprove && $(MAKE)

magiftpd:
	cd utils/magiftpd && $(MAKE)

.PHONY: clean

clean:
	rm -f $(OBJ) magicka
	cd deps/lua && $(MAKE) clean
	cd deps/jamlib && $(MAKE) -f Makefile.linux clean
	cd deps/Xmodem && $(MAKE) clean
	cd utils/magimail && $(MAKE) cleanfreebsd
	cd utils/magiedit && $(MAKE) clean
	cd deps/odoors/ && rm -rf libs-`uname -s` objs-`uname -s` exe-`uname -s`
	cd utils/ticproc && $(MAKE) clean
	cd utils/mgpost && $(MAKE) clean
	cd utils/magichat && $(MAKE) clean
	cd deps/cdk-5.0-20161210 && $(MAKE) clean
	cd utils/fileapprove && $(MAKE) clean
	cd utils/magiftpd && $(MAKE) clean