# Custom Makfile for SocketMud, based on Zarius's MC25b Makefile
CC      = gcc

IMC = 1

OPT_FLAG = -pipe -Os
DEBUG_FLAG = -g2
W_FLAGS = -Wall -DCMUD
C_FLAGS = $(MACHINE) $(W_FLAGS) $(DEBUG_FLAG) $(OPT_FLAG) $(PROF_FLAG) $(NOCRYPT) $(SAVEMEM) -DIMC
L_FLAGS = $(MACHINE) $(DEBUG_FLAG) $(OPT_FLAG) $(PROF_FLAG) -lz -lcrypt -pthread

EXECPRM = 4770

EXECFILE = CMud

#various Makefile variables
ECHOCMD = echo -e

L_RED     = \e[1;31m
L_BLUE    = \e[1;34m
L_GREEN   = \e[1;32m
L_WHITE   = \e[1;37m
L_NRM     = \e[0;00m

OBJ_DIR = obj

C_FILES = socket.c io.c strings.c utils.c interpret.c help.c  \
	  action_safe.c mccp.c save.c event.c event-handler.c \
	  list.c stack.c version.c comm.c imc.c sha256.c move.c \
	  signal.c random.c wiz.c

O_FILES := $(patsubst %.c,$(OBJ_DIR)/%.o,$(C_FILES))

H_FILES = $(wildcard *.h)

#O_FILES = socket.o io.o strings.o utils.o interpret.o help.o  \
#	  action_safe.o mccp.o save.o event.o event-handler.o \
#	  list.o stack.o


all:
	@touch version.c
	@$(MAKE) build
	@$(MAKE) -s cmud

cmud: $(O_FILES)
	@$(ECHOCMD) "[- Rebuilding MUD executable: $(L_BLUE)$(EXECFILE)$(L_NRM) -]"
	@rm -f $(EXECFILE)
	@$(CC)  -o $(EXECFILE) $(O_FILES) $(L_FLAGS)
	@$(ECHOCMD) "[- Done Compiling : $(L_BLUE)$(EXECFILE)$(L_NRM) -]"
	@$(ECHOCMD) "[- Fixing MUD permissions to $(L_WHITE)$(EXECPRM)$(L_NRM) -]"
	@chmod g+w $(EXECFILE)
	@chmod a+x $(EXECFILE)
	@chmod g+w $(O_FILES)

purge:
	rm -f $(OBJ_DIR)/*.o $(EXECFILE) core
	rm -f ../area/core*

$(OBJ_DIR)/%.o: %.c
	@$(ECHOCMD) "-->   Compiling file: $(L_WHITE)$<$(L_NRM)   <--"
	@$(CC) -c $(C_FLAGS) -o $@ $<

.c.o: merc.h
	$(CC) -c $(C_FLAGS) $<

clean :
	rm -f $(OBJ_DIR)/*.o ; rm -f $(EXECFILE)

build:
	@if [ -f ../txt/buildnum ]; then \
	expr `cat ../txt/buildnum` + 1 > ../txt/buildnum; \
	else \
		echo '1' > ../txt/buildnum; \
	fi
	@if [ -f ../txt/versionnum ]; then \
		expr `cat ../txt/versionnum` + 1 > ../txt/versionnum; \
	else \
		echo '10001' > ../txt/versionnum; \
	fi
	@if [ `cat ../txt/buildnum` -ge 51 ]; then \
	echo '1' > ../txt/buildnum; \
	fi
	@echo '#ifndef BUILD_H' > build.h
	@echo '#define BUILD_H' >> build.h
	@echo "#define LINKCOUNT   `cat ../txt/buildnum`" >> build.h
	@echo '#endif' >> build.h
	@echo '#ifndef VERSION_H' > version.h
	@echo '#define VERSION_H' >> version.h
	@echo "#define VERSION   `cat ../txt/versionnum`" >> version.h
	@echo '#endif' >> version.h
	@$(ECHOCMD) "$(L_WHITE)Build number $(L_RED)`cat ../txt/buildnum`$(L_WHITE), version $(L_RED)`cat ../txt/versionnum` $(L_WHITE)set.$(L_NRM)"