#************************************************************************
#*   IRC - Internet Relay Chat, src/modules/Makefile
#*   Copyright (C) Carsten V. Munk 2001
#*
#*   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.
#*   
#*   $Id$
#*/
# major edit from fez - to compile objects individually...

CC = "==== DO NOT RUN MAKE FROM THIS DIRECTORY ===="

INCLUDES = ../include/channel.h \
	../include/common.h ../include/config.h ../include/dbuf.h \
	../include/dynconf.h ../include/fdlist.h ../include/h.h \
	../include/ircsprintf.h \
	../include/license.h \
	../include/modules.h ../include/modversion.h ../include/msg.h \
	../include/numeric.h ../include/dns.h \
	../include/resource.h ../include/setup.h \
	../include/struct.h ../include/sys.h \
	../include/types.h \
	../include/version.h ../include/whowas.h

MODULES= \
	cloak_md5.so cloak_sha256.so cloak_none.so \
	sethost.so chghost.so chgident.so setname.so \
	setident.so sdesc.so svsmode.so swhois.so\
	svsmotd.so svsnline.so who_old.so whox.so mkpasswd.so \
	away.so svsnoop.so svsnick.so svso.so svslogin.so \
	chgname.so kill.so \
	lag.so message.so oper.so pingpong.so \
	quit.so sendumode.so sqline.so sreply.so \
	tsctl.so unsqline.so whois.so \
	tkl.so vhost.so cycle.so svsjoin.so svspart.so \
	svswatch.so svssilence.so sendsno.so svssno.so \
	sajoin.so sapart.so samode.so kick.so topic.so \
	invite.so list.so time.so svskill.so sjoin.so \
	pass.so userhost.so ison.so silence.so knock.so \
	umode2.so squit.so protoctl.so addomotd.so \
	admin.so globops.so locops.so \
	trace.so netinfo.so links.so help.so rules.so \
	close.so map.so eos.so server.so stats.so \
	dccdeny.so whowas.so \
	connect.so dccallow.so userip.so nick.so user.so \
	mode.so watch.so part.so join.so motd.so opermotd.so \
	botmotd.so lusers.so names.so svsnolag.so addmotd.so \
	svslusers.so starttls.so webredir.so cap.so \
	sasl.so md.so certfp.so \
	tls_antidos.so connect-flood.so max-unknown-connections-per-ip.so \
	webirc.so webserver.so websocket_common.so websocket.so \
	blacklist.so jointhrottle.so \
	antirandom.so hideserver.so jumpserver.so \
	ircops.so staff.so nocodes.so \
	charsys.so antimixedutf8.so authprompt.so sinfo.so \
	reputation.so connthrottle.so history_backend_mem.so \
	history_backend_null.so tkldb.so channeldb.so whowasdb.so \
	restrict-commands.so rmtkl.so require-module.so \
	account-notify.so \
	message-tags.so batch.so multiline.so \
	account-tag.so labeled-response.so link-security.so \
	message-ids.so plaintext-policy.so server-time.so sts.so \
	echo-message.so userip-tag.so userhost-tag.so geoip-tag.so \
	bot-tag.so reply-tag.so json-log-tag.so \
	typing-indicator.so channel-context.so \
	ident_lookup.so history.so chathistory.so \
	targetfloodprot.so clienttagdeny.so watch-backend.so \
	monitor.so slog.so tls_cipher.so operinfo.so creationtime.so portinfo.so \
	unreal_server_compat.so \
	extended-monitor.so geoip_csv.so \
	geoip_base.so extjwt.so tline.so \
	standard-replies.so issued-by-tag.so \
	real-quit-reason.so \
	spamreport.so crule.so \
	central-api.so central-blocklist.so \
	no-implicit-names.so maxperip.so utf8functions.so utf8only.so \
	isupport.so extended-isupport.so \
	$(GEOIP_CLASSIC_OBJECTS) \
	geoip_mmdb.so

MODULEFLAGS=@MODULEFLAGS@
RM=@RM@

.SUFFIXES:
.SUFFIXES: .c .h .so

all: build

build: $(MODULES)
	cd chanmodes; $(MAKE) all
	cd usermodes; $(MAKE) all
	cd extbans; $(MAKE) all
	cd rpc; $(MAKE) all
	cd third; $(MAKE) all

clean:
	$(RM) -f *.o *.so *~ core
	cd chanmodes; $(MAKE) clean
	cd usermodes; $(MAKE) clean
	cd extbans; $(MAKE) clean
	cd rpc; $(MAKE) clean
	cd third; $(MAKE) clean

# Generic *.so rule:
%.so: %.c $(INCLUDES)
	$(CC) $(CFLAGS) $(MODULEFLAGS) -DDYNAMIC_LINKING \
		-o $@ $<

# geoip_classic requires extra library
geoip_classic.so: geoip_classic.c $(INCLUDES)
	$(CC) $(CFLAGS) $(MODULEFLAGS) $(GEOIP_CLASSIC_CFLAGS) -DDYNAMIC_LINKING \
		-o geoip_classic.so geoip_classic.c @LDFLAGS_PRIVATELIBS@ $(GEOIP_CLASSIC_LIBS)

# geoip_mmdb uses shipped mmdb.c
geoip_mmdb.so: geoip_mmdb.c $(INCLUDES)
	$(CC) $(CFLAGS) $(MODULEFLAGS) -DDYNAMIC_LINKING \
		-o geoip_mmdb.so geoip_mmdb.c mmdb.c
