mirror of
git://git.acid.vegas/unrealircd.git
synced 2024-12-27 08:46:37 +00:00
256 lines
8.4 KiB
Makefile
256 lines
8.4 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@ @PTHREAD_LIBS@
|
||
|
CRYPTOLIB=@CRYPTOLIB@
|
||
|
OPENSSLINCLUDES=
|
||
|
|
||
|
XCFLAGS=@PTHREAD_CFLAGS@ @PCRE2_CFLAGS@ @ARGON2_CFLAGS@ @CARES_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
|
||
|
|
||
|
URL=@URL@
|
||
|
|
||
|
# 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}'
|
||
|
|
||
|
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 @BINDIR@
|
||
|
$(INSTALL) -m 0700 src/ircd @BINDIR@/unrealircd
|
||
|
$(INSTALL) -m 0700 -d @DOCDIR@
|
||
|
$(INSTALL) -m 0600 doc/Authors doc/coding-guidelines doc/tao.of.irc @DOCDIR@
|
||
|
$(INSTALL) -m 0700 -d @CONFDIR@
|
||
|
$(INSTALL) -m 0600 doc/conf/*.conf @CONFDIR@
|
||
|
$(INSTALL) -m 0600 doc/conf/*.motd @CONFDIR@
|
||
|
$(INSTALL) -m 0600 doc/conf/modules.sources.list @CONFDIR@
|
||
|
$(INSTALL) -m 0700 unrealircd @SCRIPTDIR@
|
||
|
$(INSTALL) -m 0700 -d @MODULESDIR@
|
||
|
@rm -f @MODULESDIR@/*.so 1>/dev/null 2>&1
|
||
|
$(INSTALL) -m 0700 src/modules/*.so @MODULESDIR@
|
||
|
$(INSTALL) -m 0700 -d @MODULESDIR@/usermodes
|
||
|
@rm -f @MODULESDIR@/usermodes/*.so 1>/dev/null 2>&1
|
||
|
$(INSTALL) -m 0700 src/modules/usermodes/*.so @MODULESDIR@/usermodes
|
||
|
$(INSTALL) -m 0700 -d @MODULESDIR@/chanmodes
|
||
|
@rm -f @MODULESDIR@/chanmodes/*.so 1>/dev/null 2>&1
|
||
|
$(INSTALL) -m 0700 src/modules/chanmodes/*.so @MODULESDIR@/chanmodes
|
||
|
$(INSTALL) -m 0700 -d @MODULESDIR@/snomasks
|
||
|
@rm -f @MODULESDIR@/snomasks/*.so 1>/dev/null 2>&1
|
||
|
$(INSTALL) -m 0700 src/modules/snomasks/*.so @MODULESDIR@/snomasks
|
||
|
$(INSTALL) -m 0700 -d @MODULESDIR@/extbans
|
||
|
@rm -f @MODULESDIR@/extbans/*.so 1>/dev/null 2>&1
|
||
|
$(INSTALL) -m 0700 src/modules/extbans/*.so @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 "@CONFDIR@/ssl" ] ; then \
|
||
|
mv "@CONFDIR@/ssl" "@CONFDIR@/tls" ; \
|
||
|
ln -s "@CONFDIR@/tls" "@CONFDIR@/ssl" ; \
|
||
|
fi
|
||
|
$(INSTALL) -m 0700 -d @CONFDIR@/tls
|
||
|
$(INSTALL) -m 0600 doc/conf/tls/curl-ca-bundle.crt @CONFDIR@/tls
|
||
|
@# delete modules/cap directory, to avoid confusing with U4 to U5 upgrades:
|
||
|
rm -rf @MODULESDIR@/cap
|
||
|
$(INSTALL) -m 0700 -d @MODULESDIR@/third
|
||
|
@rm -f @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 @MODULESDIR@/third
|
||
|
$(INSTALL) -m 0700 -d @TMPDIR@
|
||
|
$(INSTALL) -m 0700 -d @CACHEDIR@
|
||
|
$(INSTALL) -m 0700 -d @PERMDATADIR@
|
||
|
$(INSTALL) -m 0700 -d @LOGDIR@
|
||
|
-@if [ ! -f "@CONFDIR@/tls/server.cert.pem" ] ; then \
|
||
|
$(INSTALL) -m 0600 server.req.pem @CONFDIR@/tls ; \
|
||
|
$(INSTALL) -m 0600 server.key.pem @CONFDIR@/tls ; \
|
||
|
$(INSTALL) -m 0600 server.cert.pem @CONFDIR@/tls ; \
|
||
|
fi
|
||
|
@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 -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
|