#************************************************************************
#*   IRC - Internet Relay Chat, ircd/Makefile
#*   Copyright (C) 1990 Jarkko Oikarinen
#*
#*   This program is free software; you can redistribute it and/or modify
#*   it under the terms of the GNU General Public License as published by
#*   the Free Software Foundation; either version 1, or (at your option)
#*   any later version.
#*
#*   This program is distributed in the hope that it will be useful,
#*   but WITHOUT ANY WARRANTY; without even the implied warranty of
#*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#*   GNU General Public License for more details.
#*
#*   You should have received a copy of the GNU General Public License
#*   along with this program; if not, write to the Free Software
#*   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#*/

CC=gcc -ansi
RM=/bin/rm
CP=/bin/cp
TOUCH=touch
SHELL=/bin/sh
INSTALL=/usr/bin/install

# IRCDMODE given in top level Makefile, but added here to make sure
# compilation works if started in ircd subdirectory

IRCDMODE=711
INCLUDEDIR=../include

# CFLAGS/IRCDLIBS used in ../Makefile should also be used here.  The list
# given below is less than complete.
# For MIPS, use the following:
#CFLAGS= -g -systype bsd43 -DSYSTYPE_BSD43 -I${INCLUDEDIR}
# For Irix 4.x (SGI), use the following:
#CFLAGS= -g -cckr -I$(INCLUDEDIR)
# else just this
CFLAGS= -g -Wall -I${INCLUDEDIR}
#
# use the following on SUN OS without nameserver libraries inside libc
# NOTE: most dont have the resolver libraries inside libc
#IRCDLIBS=-lresolv
#
#on NeXT other than 2.0:
#IRCDLIBS=-lsys_s
#
# HPUX:
#IRCDLIBS=-lBSD
#
# Solaris 2
#IRCDLIBS=-lsocket -lnsl
#
# ESIX
#CFLAGS=-O -I${INCLUDEDIR} -I/usr/ucbinclude
#IRCDLIBS=-L/usr/ucblib -L/usr/lib -lsocket -lucb -lns -lnsl
#
#When profiling:
#IRCDLIBS=-lc_p

LINTFLAGS=-hba
#
# LDFLAGS - flags to send the loader (ld). SunOS users may want to add
# -Bstatic here.
#
#LDFLAGS=-Bstatic
#LDFLAGS=-Wl,-a,archive
#
# RES - if you are missing the resolv library (man 5 resolv.conf), or you
# experience probems with ip# to hostname lookups for local machines or
# the server wont compile because _res is missing, uncomment RES.
# For those who know what these are, if you normally use the resolv+
# libraries and have setup /etc/resolv.conf, these are fromm resolv+ if they
# are not part of your system libraries.  In all cases you should try your
# system libraries before these.
#
#RES=res_init.o res_comp.o res_mkquery.o

OBJS=bsd.o channel.o class.o crule.o dbuf.o ircd.o list.o map.o \
	match.o note.o packet.o parse.o random.o res.o runmalloc.o s_auth.o \
	s_bsd.o s_conf.o s_debug.o s_err.o s_misc.o s_numeric.o s_ping.o \
	s_serv.o s_user.o send.o support.o userload.o whowas.o hash.o $(RES)

SRC=$(OBJS:%.o=%.c)

MAKE = make 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
	    'LDFLAGS=${LDFLAGS}' 'IRCDMODE=${IRCDMODE}'


all: build

build: ircd chkconf

ircd: $(OBJS) ../include/patchlevel.h
	$(SHELL) version.c.SH
	$(CC) $(CFLAGS) -c version.c
	$(CC) $(CFLAGS) $(OBJS) version.o $(LDFLAGS) $(IRCDLIBS) -o ircd
	chmod $(IRCDMODE) ircd

chkconf: ../include/struct.h ../config.h ../include/sys.h \
	 ../include/common.h crule.c chkconf.c
	$(CC) $(CFLAGS) -DCR_CHKCONF -o chkcrule.o -c crule.c
	$(CC) $(CFLAGS) chkconf.c match.o chkcrule.o \
	$(LDFLAGS) $(IRCDLIBS) -o chkconf

saber: $(SRC)
	#load -I../include $(SRC) version.c $(IRCDLIBS)

lint:
	lint $(LINTFLAGS) -I../include $(SRC) | egrep -v 'sendto_|debug'

install: all
	-if [ ! -d ${IRCDDIR} -a ! -f ${IRCDDIR} ] ; then \
		mkdir ${IRCDDIR}; \
	fi
	../bsdinstall -c -s -m ${IRCDMODE} ircd ${BINDIR}
	../bsdinstall -c -s -m 700 chkconf ${BINDIR}
	$(CP) ../doc/example.conf ${IRCDDIR}
	$(TOUCH) ${IRCDDIR}/ircd.motd
	$(RM) -f ${IRCDDIR}/ircd.m4
	$(TOUCH) ${IRCDDIR}/ircd.m4
	chmod +x buildm4
	./buildm4 ${IRCDDIR}

clean:
	$(RM) -f *.o *~ core ircd version.c \#* *.bak chkconf *.orig

depend:
	( mv Makefile Makefile.bak; \
	  grep -A1 -B1000 '^# DO NOT DELETE THIS LINE' Makefile.bak > Makefile; \
	  $(CC) $(CFLAGS) -MM -I${INCLUDEDIR} ${SRC} >> Makefile; )

hash.o: ../include/struct.h ../include/sys.h ../include/hash.h hash.c \
	../include/common.h ../config.h s_bsd.c s_serv.c s_user.c \
	channel.c s_misc.c
	@crypt/sums
	$(CC) $(CFLAGS)   -c hash.c -o hash.o
	@/bin/rm -f hash.c
	@/bin/mv -f hash.c.old hash.c
	@touch hash.o

# DO NOT DELETE THIS LINE -- make depend depends on it.

bsd.o: bsd.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/s_bsd.h ../include/ircd.h ../include/bsd.h
channel.o: channel.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/channel.h ../include/parse.h ../include/whowas.h \
 ../include/send.h ../include/s_err.h ../include/numeric.h \
 ../include/ircd.h ../include/match.h ../include/list.h \
 ../include/hash.h ../include/s_misc.h ../include/s_user.h \
 ../include/s_conf.h ../include/s_bsd.h ../include/msg.h \
 ../include/common.h ../include/s_serv.h ../include/support.h
class.o: class.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/class.h ../include/s_conf.h ../include/list.h \
 ../include/s_serv.h ../include/send.h ../include/s_err.h \
 ../include/numeric.h ../include/ircd.h
crule.o: crule.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/s_serv.h ../include/ircd.h ../include/match.h \
 ../include/s_bsd.h ../include/common.h ../include/crule.h
dbuf.o: dbuf.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/dbuf.h
hash.o: hash.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/s_serv.h ../include/hash.h ../include/common.h \
 ../include/match.h ../include/channel.h ../include/send.h \
 ../include/ircd.h
ircd.o: ircd.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/res.h ../include/list.h \
 ../include/struct.h ../include/dbuf.h ../include/s_serv.h \
 ../include/send.h ../include/ircd.h ../include/s_conf.h \
 ../include/class.h ../include/s_misc.h ../include/parse.h \
 ../include/match.h ../include/s_bsd.h ../include/crule.h \
 ../include/userload.h ../include/numeric.h ../include/hash.h \
 ../include/bsd.h ../include/version.h ../include/whowas.h
list.o: list.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/numeric.h ../include/send.h ../include/s_conf.h \
 ../include/list.h ../include/class.h ../include/match.h \
 ../include/ircd.h ../include/s_serv.h ../include/support.h \
 ../include/s_misc.h ../include/s_bsd.h ../include/whowas.h \
 ../include/res.h ../include/common.h
map.o: map.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/numeric.h ../include/send.h ../include/match.h \
 ../include/list.h ../include/s_err.h ../include/ircd.h \
 ../include/s_bsd.h ../include/s_misc.h ../include/map.h
match.o: match.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/common.h ../include/match.h ../include/ircd.h
note.o: note.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h
packet.o: packet.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/s_misc.h ../include/s_bsd.h ../include/ircd.h \
 ../include/msg.h ../include/parse.h ../include/send.h \
 ../include/packet.h
parse.o: parse.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/s_serv.h ../include/send.h ../include/parse.h \
 ../include/match.h ../include/s_bsd.h ../include/msg.h \
 ../include/s_user.h ../include/channel.h ../include/whowas.h \
 ../include/s_ping.h ../include/s_conf.h ../include/list.h \
 ../include/res.h ../include/map.h ../include/hash.h \
 ../include/numeric.h ../include/ircd.h ../include/s_misc.h \
 ../include/common.h ../include/s_numeric.h
random.o: random.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/random.h
res.o: res.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/inet.h ../include/res.h \
 ../include/list.h ../include/res_init.h ../include/nameser.h \
 ../include/resolv.h ../include/struct.h ../include/dbuf.h \
 ../include/numeric.h ../include/send.h ../include/s_misc.h \
 ../include/s_bsd.h ../include/ircd.h ../include/s_ping.h \
 ../include/res_mkquery.h ../include/res_comp.h ../include/support.h \
 ../include/match.h
runmalloc.o: runmalloc.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h
s_auth.o: s_auth.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/res.h ../include/list.h \
 ../include/struct.h ../include/dbuf.h ../include/common.h \
 ../include/match.h ../include/send.h ../include/s_bsd.h \
 ../include/s_misc.h ../include/support.h ../include/ircd.h \
 ../include/s_auth.h
s_bsd.o: s_bsd.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/nameser.h \
 ../include/h.h ../include/s_debug.h ../include/inet.h \
 ../include/resolv.h ../include/res.h ../include/list.h \
 ../include/struct.h ../include/dbuf.h ../include/s_bsd.h \
 ../include/s_serv.h ../include/numeric.h ../include/send.h \
 ../include/s_conf.h ../include/s_misc.h ../include/hash.h \
 ../include/s_err.h ../include/res_init.h ../include/ircd.h \
 ../include/support.h ../include/s_auth.h ../include/class.h \
 ../include/packet.h ../include/s_ping.h ../include/channel.h \
 ../include/version.h ../include/parse.h ../include/common.h \
 ../include/match.h ../include/bsd.h
s_conf.o: s_conf.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/inet.h \
 ../include/h.h ../include/s_debug.h ../include/struct.h \
 ../include/dbuf.h ../include/s_serv.h ../include/numeric.h \
 ../include/send.h ../include/s_conf.h ../include/list.h \
 ../include/class.h ../include/s_misc.h ../include/match.h \
 ../include/common.h ../include/s_err.h ../include/s_bsd.h \
 ../include/ircd.h ../include/crule.h ../include/res.h \
 ../include/support.h ../include/parse.h
s_debug.o: s_debug.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/numeric.h ../include/hash.h ../include/send.h \
 ../include/s_conf.h ../include/list.h ../include/class.h \
 ../include/ircd.h ../include/s_bsd.h ../include/bsd.h \
 ../include/whowas.h ../include/s_serv.h ../include/res.h \
 ../include/channel.h
s_err.o: s_err.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/numeric.h ../include/s_err.h
s_misc.o: s_misc.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/s_serv.h ../include/numeric.h ../include/send.h \
 ../include/s_conf.h ../include/list.h ../include/s_misc.h \
 ../include/match.h ../include/hash.h ../include/s_bsd.h \
 ../include/res.h ../include/ircd.h ../include/s_ping.h \
 ../include/channel.h ../include/s_err.h ../include/support.h \
 ../include/userload.h ../include/parse.h ../include/s_user.h
s_numeric.o: s_numeric.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/s_serv.h ../include/s_bsd.h ../include/send.h \
 ../include/support.h ../include/parse.h ../include/numeric.h \
 ../include/channel.h ../include/s_numeric.h
s_ping.o: s_ping.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/send.h ../include/s_conf.h ../include/list.h \
 ../include/match.h ../include/res.h ../include/s_bsd.h \
 ../include/s_serv.h ../include/ircd.h ../include/s_ping.h \
 ../include/support.h ../include/numeric.h ../include/s_user.h \
 ../include/s_err.h ../include/common.h ../include/inet.h
s_serv.o: s_serv.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/s_serv.h ../include/numeric.h ../include/send.h \
 ../include/s_conf.h ../include/list.h ../include/class.h \
 ../include/s_misc.h ../include/parse.h ../include/match.h \
 ../include/crule.h ../include/hash.h ../include/s_bsd.h \
 ../include/s_err.h ../include/ircd.h ../include/version.h \
 ../include/s_user.h ../include/support.h ../include/userload.h \
 ../include/channel.h ../include/msg.h ../include/common.h
s_user.o: s_user.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/common.h ../include/match.h ../include/s_serv.h \
 ../include/numeric.h ../include/send.h ../include/s_conf.h \
 ../include/list.h ../include/s_misc.h ../include/hash.h \
 ../include/s_bsd.h ../include/whowas.h ../include/s_err.h \
 ../include/parse.h ../include/ircd.h ../include/s_user.h \
 ../include/support.h ../include/channel.h ../include/random.h \
 ../include/version.h ../include/msg.h ../include/userload.h
send.o: send.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/s_bsd.h ../include/s_serv.h ../include/send.h \
 ../include/s_misc.h ../include/match.h ../include/list.h \
 ../include/ircd.h ../include/channel.h ../include/bsd.h \
 ../include/class.h ../include/s_user.h
support.o: support.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/send.h ../include/ircd.h \
 ../include/s_bsd.h ../include/support.h
userload.o: userload.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/send.h ../include/s_misc.h ../include/userload.h \
 ../include/ircd.h
whowas.o: whowas.c ../include/sys.h ../include/../config.h \
 ../include/setup.h ../include/runmalloc.h ../include/h.h \
 ../include/s_debug.h ../include/struct.h ../include/dbuf.h \
 ../include/numeric.h ../include/send.h ../include/s_misc.h \
 ../include/s_err.h ../include/whowas.h ../include/ircd.h \
 ../include/list.h ../include/match.h ../include/s_user.h \
 ../include/support.h
