mirror of
git://git.acid.vegas/unrealircd.git
synced 2024-12-26 16:26:38 +00:00
269 lines
9.5 KiB
Makefile
269 lines
9.5 KiB
Makefile
#/************************************************************************
|
|
#* IRC - Internet Relay Chat, 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.
|
|
#*
|
|
#* $Id$
|
|
#*/
|
|
|
|
CC=@CC@
|
|
INCLUDEDIR=@UNRLINCDIR@
|
|
NETWORKSDIR=
|
|
FROMDOS=/home/cmunk/bin/4dos
|
|
|
|
# [CHANGEME]
|
|
# Default flags:
|
|
# Change XCFLAGS if you don't like what Config puts there. Same with
|
|
# IRCDLIBS.
|
|
#
|
|
# If you are configuring by hand, try "-O -g" for XCFLAGS, and leave
|
|
# IRCDLIBS blank. If that fails, try recomendations below.
|
|
#
|
|
|
|
#XCFLAGS=-O -g -export-dynamic
|
|
IRCDLIBS=@IRCDLIBS@ @PCRE2_LIBS@ @ARGON2_LIBS@ @CARES_LIBS@ @SODIUM_LIBS@ @JANSSON_LIBS@ @PTHREAD_LIBS@
|
|
CRYPTOLIB=@CRYPTOLIB@
|
|
OPENSSLINCLUDES=
|
|
|
|
XCFLAGS=@PTHREAD_CFLAGS@ @PCRE2_CFLAGS@ @ARGON2_CFLAGS@ @CARES_CFLAGS@ @SODIUM_CFLAGS@ @JANSSON_CFLAGS@ @CFLAGS@ @HARDEN_CFLAGS@ @CPPFLAGS@
|
|
#
|
|
# use the following on MIPS:
|
|
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
|
|
# For Irix 4.x (SGI), use the following:
|
|
#CFLAGS= -g -cckr -I$(INCLUDEDIR)
|
|
#
|
|
# on NEXT use:
|
|
#CFLAGS=-bsd -I$(INCLUDEDIR)
|
|
#on NeXT other than 2.0:
|
|
#IRCDLIBS=-lsys_s
|
|
#
|
|
# AIX 370 flags
|
|
#CFLAGS=-D_BSD -Hxa -I$(INCLUDEDIR)
|
|
#IRCDLIBS=-lbsd
|
|
#
|
|
# Dynix/ptx V2.0.x
|
|
#CFLAGS= -I$(INCLUDEDIR) -O -Xo
|
|
#IRCDLIBS= -lsocket -linet -lnsl -lseq
|
|
#
|
|
# Dynix/ptx V1.x.x
|
|
#IRCDLIBS= -lsocket -linet -lnsl -lseq
|
|
#
|
|
#use the following on SUN OS without nameserver libraries inside libc
|
|
#IRCDLIBS=-lresolv
|
|
#
|
|
# Solaris 2
|
|
#IRCDLIBS=-lsocket -lnsl -lresolv -L/usr/ucblib -R/usr/ucblib -lgen
|
|
#
|
|
# ESIX
|
|
#CFLAGS=-O -I$(INCLUDEDIR) -I/usr/ucbinclude
|
|
#IRCDLIBS=-L/usr/ucblib -L/usr/lib -lsocket -lucb -lns -lnsl
|
|
#
|
|
# LDFLAGS - flags to send the loader (ld). SunOS users may want to add
|
|
# -Bstatic here.
|
|
#
|
|
#LDFLAGS=-Bstatic
|
|
#
|
|
#Dell SVR4
|
|
#CC=gcc
|
|
#CFLAGS= -I$(INCLUDEDIR) -O2
|
|
#IRCDLIBS=-lsocket -lnsl -lucb
|
|
|
|
# [CHANGEME]
|
|
# IRCDMODE is the mode you want the binary to be.
|
|
# The 4 at the front is important (allows for setuidness)
|
|
#
|
|
# WARNING: if you are making ircd SUID or SGID, check config.h to make sure
|
|
# you are not defining CMDLINE_CONFIG
|
|
IRCDMODE = 711
|
|
|
|
# Objects that are optional due to optional libraries:
|
|
URL=@URL@
|
|
GEOIP_CLASSIC_OBJECTS=@GEOIP_CLASSIC_OBJECTS@
|
|
GEOIP_CLASSIC_LIBS=@GEOIP_CLASSIC_LIBS@
|
|
GEOIP_CLASSIC_CFLAGS=@GEOIP_CLASSIC_CFLAGS@
|
|
GEOIP_MAXMIND_OBJECTS=@GEOIP_MAXMIND_OBJECTS@
|
|
LIBMAXMINDDB_CFLAGS=@LIBMAXMINDDB_CFLAGS@
|
|
LIBMAXMINDDB_LIBS=@LIBMAXMINDDB_LIBS@
|
|
|
|
# Where is your openssl binary
|
|
OPENSSLPATH=@OPENSSLPATH@
|
|
|
|
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS)
|
|
XLDFLAGS=@LDFLAGS_PRIVATELIBS@ @HARDEN_LDFLAGS@ @LDFLAGS@
|
|
LDFLAGS=$(XLDFLAGS)
|
|
|
|
SHELL=/bin/sh
|
|
SUBDIRS=src
|
|
BINDIR=@BINDIR@
|
|
INSTALL=@INSTALL@
|
|
RM=@RM@
|
|
CP=@CP@
|
|
TOUCH=@TOUCH@
|
|
RES=
|
|
all: build
|
|
|
|
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
|
|
'LDFLAGS=${LDFLAGS}' 'IRCDMODE=${IRCDMODE}' \
|
|
'RES=${RES}' 'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \
|
|
'INCLUDEDIR=${INCLUDEDIR}' \
|
|
'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
|
|
'SHELL=${SHELL}' \
|
|
'CRYPTOLIB=${CRYPTOLIB}' \
|
|
'CRYPTOINCLUDES=${CRYPTOINCLUDES}' \
|
|
'URL=${URL}' \
|
|
'GEOIP_CLASSIC_OBJECTS=${GEOIP_CLASSIC_OBJECTS}' \
|
|
'GEOIP_CLASSIC_LIBS=${GEOIP_CLASSIC_LIBS}' \
|
|
'GEOIP_CLASSIC_CFLAGS=${GEOIP_CLASSIC_CFLAGS}' \
|
|
'GEOIP_MAXMIND_OBJECTS=${GEOIP_MAXMIND_OBJECTS}' \
|
|
'LIBMAXMINDDB_CFLAGS=${LIBMAXMINDDB_CFLAGS}' \
|
|
'LIBMAXMINDDB_LIBS=${LIBMAXMINDDB_LIBS}'
|
|
|
|
custommodule:
|
|
@if test -z "${MODULEFILE}"; then echo "Please set MODULEFILE when calling \`\`make custommodule''. For example, \`\`make custommodule MODULEFILE=callerid''." >&2; exit 1; fi
|
|
+cd src; ${MAKE} ${MAKEARGS} MODULEFILE=${MODULEFILE} 'EXLIBS=${EXLIBS}' custommodule
|
|
|
|
server: Makefile
|
|
build: Makefile
|
|
-@if [ ! -f include/setup.h ] ; then \
|
|
echo "Hmm...doesn't look like you've run Config..."; \
|
|
echo "Doing so now."; \
|
|
sh Config; \
|
|
fi
|
|
@+for i in $(SUBDIRS); do \
|
|
echo "Building $$i";\
|
|
( cd $$i; ${MAKE} ${MAKEARGS} build; ) \
|
|
done
|
|
@echo ''
|
|
@echo '* UnrealIRCd compiled successfully'
|
|
@echo '* YOU ARE NOT DONE YET! Run "${MAKE} install" to install UnrealIRCd !'
|
|
@echo ''
|
|
|
|
clean:
|
|
$(RM) -f *~ \#* core *.orig include/*.orig
|
|
@+for i in $(SUBDIRS); do \
|
|
echo "Cleaning $$i";\
|
|
( cd $$i; ${MAKE} ${MAKEARGS} clean; ) \
|
|
done
|
|
-@if [ -f include/setup.h ] ; then \
|
|
echo "To really restart installation, remove include/setup.h" ; \
|
|
fi
|
|
|
|
cleandir: clean
|
|
rm -rf include/setup.h Makefile Settings
|
|
|
|
distclean: cleandir
|
|
rm -rf extras/*.bak extras/*.tar extras/c-ares
|
|
rm -rf extras/c-ares-* extras/tre-*
|
|
rm -rf config.log config.settings *.pem ircd.* unrealircd
|
|
rm -rf Makefile config.status
|
|
|
|
depend:
|
|
@+for i in $(SUBDIRS); do \
|
|
echo "Making dependencies in $$i";\
|
|
( cd $$i; ${MAKE} ${MAKEARGS} depend; ) \
|
|
done
|
|
|
|
install: all
|
|
$(INSTALL) -m 0700 -d $(DESTDIR)@BINDIR@
|
|
$(INSTALL) -m 0700 src/ircd $(DESTDIR)@BINDIR@/unrealircd
|
|
$(INSTALL) -m 0700 src/unrealircdctl $(DESTDIR)@BINDIR@/unrealircdctl
|
|
$(INSTALL) -m 0700 extras/unrealircd-upgrade-script $(DESTDIR)@BINDIR@/unrealircd-upgrade-script
|
|
$(INSTALL) -m 0700 -d $(DESTDIR)@DOCDIR@
|
|
$(INSTALL) -m 0600 doc/Authors doc/coding-guidelines doc/tao.of.irc doc/KEYS doc/RELEASE-NOTES.md $(DESTDIR)@DOCDIR@
|
|
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@
|
|
$(INSTALL) -m 0600 doc/conf/*.conf $(DESTDIR)@CONFDIR@
|
|
$(INSTALL) -m 0600 doc/conf/*.motd $(DESTDIR)@CONFDIR@
|
|
$(INSTALL) -m 0700 unrealircd $(DESTDIR)@SCRIPTDIR@
|
|
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@
|
|
@rm -f $(DESTDIR)@MODULESDIR@/*.so 1>/dev/null 2>&1
|
|
$(INSTALL) -m 0700 src/modules/*.so $(DESTDIR)@MODULESDIR@
|
|
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/usermodes
|
|
@rm -f $(DESTDIR)@MODULESDIR@/usermodes/*.so 1>/dev/null 2>&1
|
|
$(INSTALL) -m 0700 src/modules/usermodes/*.so $(DESTDIR)@MODULESDIR@/usermodes
|
|
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/chanmodes
|
|
@rm -f $(DESTDIR)@MODULESDIR@/chanmodes/*.so 1>/dev/null 2>&1
|
|
$(INSTALL) -m 0700 src/modules/chanmodes/*.so $(DESTDIR)@MODULESDIR@/chanmodes
|
|
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/extbans
|
|
@rm -f $(DESTDIR)@MODULESDIR@/extbans/*.so 1>/dev/null 2>&1
|
|
$(INSTALL) -m 0700 src/modules/extbans/*.so $(DESTDIR)@MODULESDIR@/extbans
|
|
@#If the conf/ssl directory exists then rename it here to conf/tls
|
|
@#and add a symlink for backwards compatibility (so that f.e. certbot
|
|
@#doesn't randomly fail after an upgrade to U5).
|
|
-@if [ -d "$(DESTDIR)@CONFDIR@/ssl" ] ; then \
|
|
mv "$(DESTDIR)@CONFDIR@/ssl" "$(DESTDIR)@CONFDIR@/tls" ; \
|
|
ln -s "$(DESTDIR)@CONFDIR@/tls" "$(DESTDIR)@CONFDIR@/ssl" ; \
|
|
fi
|
|
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/tls
|
|
$(INSTALL) -m 0600 doc/conf/tls/curl-ca-bundle.crt $(DESTDIR)@CONFDIR@/tls
|
|
@# delete modules/cap directory, to avoid confusing with U4 to U5 upgrades:
|
|
rm -rf $(DESTDIR)@MODULESDIR@/cap
|
|
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/third
|
|
@rm -f $(DESTDIR)@MODULESDIR@/third/*.so 1>/dev/null 2>&1
|
|
@#This step can fail with zero files, so we ignore exit status:
|
|
-$(INSTALL) -m 0700 src/modules/third/*.so $(DESTDIR)@MODULESDIR@/third
|
|
$(INSTALL) -m 0700 -d $(DESTDIR)@TMPDIR@
|
|
$(INSTALL) -m 0700 -d $(DESTDIR)@CACHEDIR@
|
|
$(INSTALL) -m 0700 -d $(DESTDIR)@PERMDATADIR@
|
|
$(INSTALL) -m 0700 -d $(DESTDIR)@LOGDIR@
|
|
-@if [ ! -f "$(DESTDIR)@CONFDIR@/tls/server.cert.pem" ] ; then \
|
|
$(INSTALL) -m 0600 server.req.pem $(DESTDIR)@CONFDIR@/tls ; \
|
|
$(INSTALL) -m 0600 server.key.pem $(DESTDIR)@CONFDIR@/tls ; \
|
|
$(INSTALL) -m 0600 server.cert.pem $(DESTDIR)@CONFDIR@/tls ; \
|
|
fi
|
|
@rm -f $(DESTDIR)@SCRIPTDIR@/source
|
|
ln -s @BUILDDIR@ $(DESTDIR)@SCRIPTDIR@/source
|
|
@echo ''
|
|
@echo '* UnrealIRCd is now installed.'
|
|
|
|
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
|
|
echo '* Leave this directory and run "cd @SCRIPTDIR@" now' ; \
|
|
fi
|
|
@echo '* Directory layout:'
|
|
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
|
|
echo ' * Base directory: @SCRIPTDIR@' ; \
|
|
fi
|
|
@echo ' * Configuration files: @CONFDIR@'
|
|
@echo ' * Log files: @LOGDIR@'
|
|
@echo ' * Modules: @MODULESDIR@'
|
|
@echo '* To start/stop UnrealIRCd run: @SCRIPTDIR@/unrealircd"'
|
|
@echo ''
|
|
@echo '* Consult the documentation online at:'
|
|
@echo ' * https://www.unrealircd.org/docs/'
|
|
@echo ' * https://www.unrealircd.org/docs/FAQ'
|
|
@echo '* You may also wish to install a cron job to ensure UnrealIRCd is always running:'
|
|
@echo ' * https://www.unrealircd.org/docs/Cron_job'
|
|
@echo ''
|
|
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
|
|
echo 'Again, be sure to change to the @SCRIPTDIR@ directory!' ; \
|
|
fi
|
|
|
|
pem: extras/tls.cnf
|
|
@echo "Generating server key..."
|
|
$(OPENSSLPATH) ecparam -out server.key.pem -name secp384r1 -genkey
|
|
@echo "Generating certificate request..."
|
|
$(OPENSSLPATH) req -new \
|
|
-config extras/tls.cnf -sha256 -out server.req.pem \
|
|
-key server.key.pem -nodes
|
|
@echo "Generating self-signed certificate..."
|
|
$(OPENSSLPATH) req -x509 -days 3650 -sha256 -nodes -in server.req.pem \
|
|
-key server.key.pem -out server.cert.pem
|
|
@echo "Setting permissions on server.*.pem files..."
|
|
chmod o-rwx server.req.pem server.key.pem server.cert.pem
|
|
chmod g-rwx server.req.pem server.key.pem server.cert.pem
|
|
|
|
Makefile: config.status Makefile.in
|
|
./config.status
|