2020-03-29 09:16:53 +00:00
#/************************************************************************
#* 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
2022-01-15 05:16:34 +00:00
IRCDLIBS = @IRCDLIBS@ @PCRE2_LIBS@ @ARGON2_LIBS@ @CARES_LIBS@ @SODIUM_LIBS@ @JANSSON_LIBS@ @PTHREAD_LIBS@
2020-03-29 09:16:53 +00:00
CRYPTOLIB = @CRYPTOLIB@
OPENSSLINCLUDES =
2022-01-15 05:16:34 +00:00
XCFLAGS = @PTHREAD_CFLAGS@ @PCRE2_CFLAGS@ @ARGON2_CFLAGS@ @CARES_CFLAGS@ @SODIUM_CFLAGS@ @JANSSON_CFLAGS@ @CFLAGS@ @HARDEN_CFLAGS@ @CPPFLAGS@
2020-03-29 09:16:53 +00:00
#
# 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
2022-01-15 05:16:34 +00:00
# Objects that are optional due to optional libraries:
2020-03-29 09:16:53 +00:00
URL = @URL@
2022-01-15 05:16:34 +00:00
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@
2020-03-29 09:16:53 +00:00
# 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}' \
2022-01-15 05:16:34 +00:00
'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}'
2020-03-29 09:16:53 +00:00
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'
2022-01-15 05:16:34 +00:00
@echo '* YOU ARE NOT DONE YET! Run "${MAKE} install" to install UnrealIRCd !'
2020-03-29 09:16:53 +00:00
@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
2021-01-08 23:15:08 +00:00
$( INSTALL) -m 0700 -d $( DESTDIR) @BINDIR@
$( INSTALL) -m 0700 src/ircd $( DESTDIR) @BINDIR@/unrealircd
2022-04-03 15:09:29 +00:00
$( INSTALL) -m 0700 src/unrealircdctl $( DESTDIR) @BINDIR@/unrealircdctl
2021-03-21 17:05:35 +00:00
$( INSTALL) -m 0700 extras/unrealircd-upgrade-script $( DESTDIR) @BINDIR@/unrealircd-upgrade-script
2021-01-08 23:15:08 +00:00
$( INSTALL) -m 0700 -d $( DESTDIR) @DOCDIR@
2021-03-21 17:05:35 +00:00
$( INSTALL) -m 0600 doc/Authors doc/coding-guidelines doc/tao.of.irc doc/KEYS doc/RELEASE-NOTES.md $( DESTDIR) @DOCDIR@
2021-01-08 23:15:08 +00:00
$( 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
2020-03-29 09:16:53 +00:00
@#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) .
2021-01-08 23:15:08 +00:00
-@if [ -d " $( DESTDIR) @CONFDIR@/ssl " ] ; then \
mv " $( DESTDIR) @CONFDIR@/ssl " " $( DESTDIR) @CONFDIR@/tls " ; \
ln -s " $( DESTDIR) @CONFDIR@/tls " " $( DESTDIR) @CONFDIR@/ssl " ; \
2020-03-29 09:16:53 +00:00
fi
2021-01-08 23:15:08 +00:00
$( INSTALL) -m 0700 -d $( DESTDIR) @CONFDIR@/tls
$( INSTALL) -m 0600 doc/conf/tls/curl-ca-bundle.crt $( DESTDIR) @CONFDIR@/tls
2020-03-29 09:16:53 +00:00
@# delete modules/cap directory, to avoid confusing with U4 to U5 upgrades:
2021-01-08 23:15:08 +00:00
rm -rf $( DESTDIR) @MODULESDIR@/cap
$( INSTALL) -m 0700 -d $( DESTDIR) @MODULESDIR@/third
@rm -f $( DESTDIR) @MODULESDIR@/third/*.so 1>/dev/null 2>& 1
2020-03-29 09:16:53 +00:00
@#This step can fail with zero files, so we ignore exit status:
2021-01-08 23:15:08 +00:00
-$( 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 ; \
2020-03-29 09:16:53 +00:00
fi
2021-01-08 23:15:08 +00:00
@rm -f $( DESTDIR) @SCRIPTDIR@/source
ln -s @BUILDDIR@ $( DESTDIR) @SCRIPTDIR@/source
2020-03-29 09:16:53 +00:00
@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..."
2022-01-15 05:16:34 +00:00
$( OPENSSLPATH) req -x509 -days 3650 -sha256 -nodes -in server.req.pem \
2020-03-29 09:16:53 +00:00
-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