MAKEDEP = @MAKEDEP_PROG@
INDENT = @INDENT_PROG@
ASTYLE = @ASTYLE_PROG@
TOUCH = @TOUCH_PROG@
CTAGS = @CTAGS_PROG@
LINT = @LINT_PROG@
CVS = @CVS_PROG@
INSTALL = @INSTALL@
CYGSHELL = @CYGWIN_ENV@
MINGW = @MINGW32_ENV@
PACKAGE = @PACKAGE_STRING@
CC = @CXX@
PROF = @CXXFLAGS@
WARN = -Wall -Werror
LIBS = @LIBS@
SRC = @srcdir@
VPATH = @srcdir@
CONFIG = config
BIN = ../bin
HDIR = h
ODIR = o
D_FLAGS = @DEFS@
C_FLAGS = ${WARN} ${PROF} ${D_FLAGS} -I${HDIR}
L_FLAGS = ${PROF} ${LIBS}
C_FILES := ${wildcard *.c}
O_FILES := ${patsubst %.c, ${ODIR}/%.o, ${C_FILES}}
H_FILES := ${wildcard ${HDIR}/*.h}
SRCS := ${C_FILES} ${H_FILES}
ifdef CYGSHELL
EXE = rom.exe
CYGEXE = rom.new.exe
else
EXE = rom
endif
default:
@echo "Options: all, install, ${EXE}, clean, touch, indent, tags, lint, backup, resetconfig, and cvsupdate."
.PHONY: all
all: checkdepend checkfiles ${EXE}
${EXE}: ${sort ${O_FILES}}
@rm -f ${EXE}
@${CC} -o ${EXE} ${O_FILES} ${L_FLAGS}
ifdef CYGSHELL
@cp -f ${EXE} ${CYGEXE}
endif
@echo "Done ${PACKAGE} build."
.PHONY: install
install: all
@rm -f ${BIN}/${EXE}
@${INSTALL} ${EXE} ${BIN}
ifdef CYGSHELL
@${INSTALL} ${EXE} ${BIN}/${CYGEXE}
# Installs the cygwin1.dll to windows directory.
@../win/install.bat cygwin
endif
@echo "Done ${PACKAGE} install."
${ODIR}/%.o: %.c
@echo "`date +"%X"` : Compiling $<..."
@${CC} -c ${C_FLAGS} -o $@ $<
%.header: %.h
@mv -f $< ${HDIR}
.PHONY: checkdepend
checkdepend:
@if [ -z "`cat .depend`" ]; then ${MAKE} depend; fi
.PHONY: checkfiles
checkfiles: checkdirs ${patsubst %.h, %.header, ${wildcard *.h}}
.PHONY: checkdirs
checkdirs:
@if [ ! -d ${HDIR} ]; then mkdir ${HDIR}; fi
@if [ ! -d ${ODIR} ]; then mkdir ${ODIR}; fi
.PHONY: clean
clean:
@rm -f *.o *.orig *.rej *~ ${ODIR}/*.* ${HDIR}/*~ ${HDIR}/*.orig ${HDIR}/*.rej \
${CONFIG}/*~ ${EXE}* tags
ifdef CYGSHELL
@rm -f ${CYGEXE}
endif
@echo "Done cleaning ${PACKAGE}."
.PHONY: touch
touch:
@if [ "${TOUCH}" != "error" ]; then \
${TOUCH} ${SRCS}; \
echo "Done touching ${PACKAGE} files."; \
fi
.PHONY: indent
indent:
@if [ "${INDENT}" != "error" ]; then \
${INDENT} ${SRCS}; \
echo "Done formating ${PACKAGE} files."; \
else if [ "${ASTYLE}" != "error" ]; then \
${ASTYLE} ${SRCS}; \
echo "Done formating ${PACKAGE} files."; \
fi \
fi
.PHONY: astyle
astyle:
@if [ "${ASTYLE}" != "error" ]; then \
${ASTYLE} ${SRCS}; \
echo "Done formating ${PACKAGE} files."; \
else if [ "${INDENT}" != "error" ]; then \
${INDENT} ${SRCS}; \
echo "Done formating ${PACKAGE} files."; \
fi \
fi
# After tag file is created, you can use vi -t {tag}
# to edit a file at a specific c-type tag.
.PHONY: tags
tags:
@if [ "${CTAGS}" != "error" ]; then \
${CTAGS} ${SRCS}; \
echo "${PACKAGE} tag file created."; \
fi
.PHONY: lint
lint:
@if [ "${LINT}" != "error" ]; then \
${LINT} ${SRCS}; \
echo "${PACKAGE} source files linted."; \
fi
.PHONY: backup
backup:
@${BIN}/backup clean
@${BIN}/backup all
.PHONY: resetconfig
resetconfig: indent clean
@rm -f ${CONFIG}/config.cache
@rm -f ${CONFIG}/config.log
@rm -f ${CONFIG}/config.status
@rm -rf ${CONFIG}/autom4te.cache
@rm -f ${CONFIG}/stamp-h*
@rm -f ${HDIR}/config.h
@rm -f Makefile
@cp -f ${CONFIG}/Makefile.orig Makefile
@rm -f .depend
@rm -f ${BIN}/${EXE}
ifdef CYGSHELL
@rm -f ${BIN}/${CYGEXE}
endif
@rm -f ${BIN}/${EXE}.pid
@rm -f ../data/shutdown.txt
@rm -f ../data/plr_index.dat
@rm -f ../data/i3/*.hist ../data/i3/i3.mudlist ../data/i3/i3.chanlist
@rm -f ../log/*.log
@echo "${PACKAGE} configuration reset."
.PHONY: cvsupdate
cvsupdate:
@if [ "${CVS}" != "error" ]; then \
if [ -d CVS ]; then \
${CVS} update; \
else \
@echo "No Cvs info found! Try using cvs checkout first."; \
fi \
fi
.PHONY: depend
depend:
@if [ "${MAKEDEP}" = "makedepend" ]; then \
${MAKEDEP} -DDEPEND -p${ODIR}/ -f- -- ${C_FLAGS} -- ${SRCS} > .depend; \
else if [ "${MAKEDEP}" = "mkdep" ]; then \
${MAKEDEP} -p ${C_FLAGS} ${SRCS}; \
else \
${CC} -E -MM -DDEPEND ${SRCS} -Ih | sed 's/\(.*\)\.o:/${ODIR}\/\1.o:/g' > .depend; \
fi \
fi
@echo "${PACKAGE} dependencies made."
.PHONY: prepare
prepare: checkfiles touch depend tags
include .depend