]> jfr.im git - irc/unrealircd/unrealircd.git/blame - Makefile.in
./Config: import settings from UnrealIRCd 6.1.5
[irc/unrealircd/unrealircd.git] / Makefile.in
CommitLineData
aa5ee8b7 1#/************************************************************************
2#* IRC - Internet Relay Chat, Makefile
3#* Copyright (C) 1990, Jarkko Oikarinen
4#*
5#* This program is free software; you can redistribute it and/or modify
6#* it under the terms of the GNU General Public License as published by
7#* the Free Software Foundation; either version 1, or (at your option)
8#* any later version.
9#*
10#* This program is distributed in the hope that it will be useful,
11#* but WITHOUT ANY WARRANTY; without even the implied warranty of
12#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13#* GNU General Public License for more details.
14#*
15#* You should have received a copy of the GNU General Public License
16#* along with this program; if not, write to the Free Software
17#* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18#*
19#* $Id$
20#*/
21
22CC=@CC@
101d2dd6 23INCLUDEDIR=@UNRLINCDIR@
aa5ee8b7 24NETWORKSDIR=
25FROMDOS=/home/cmunk/bin/4dos
26
27# [CHANGEME]
28# Default flags:
29# Change XCFLAGS if you don't like what Config puts there. Same with
30# IRCDLIBS.
31#
32# If you are configuring by hand, try "-O -g" for XCFLAGS, and leave
33# IRCDLIBS blank. If that fails, try recomendations below.
34#
35
40f4bb7e 36#XCFLAGS=-O -g -export-dynamic
f89348d2 37IRCDLIBS=@IRCDLIBS@ @PCRE2_LIBS@ @ARGON2_LIBS@ @CARES_LIBS@ @SODIUM_LIBS@ @JANSSON_LIBS@ @PTHREAD_LIBS@
aa5ee8b7 38CRYPTOLIB=@CRYPTOLIB@
39OPENSSLINCLUDES=
40
f89348d2 41XCFLAGS=@PTHREAD_CFLAGS@ @PCRE2_CFLAGS@ @ARGON2_CFLAGS@ @CARES_CFLAGS@ @SODIUM_CFLAGS@ @JANSSON_CFLAGS@ @CFLAGS@ @HARDEN_CFLAGS@ @CPPFLAGS@
aa5ee8b7 42#
43# use the following on MIPS:
44#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
45# For Irix 4.x (SGI), use the following:
46#CFLAGS= -g -cckr -I$(INCLUDEDIR)
47#
48# on NEXT use:
49#CFLAGS=-bsd -I$(INCLUDEDIR)
50#on NeXT other than 2.0:
51#IRCDLIBS=-lsys_s
52#
53# AIX 370 flags
54#CFLAGS=-D_BSD -Hxa -I$(INCLUDEDIR)
55#IRCDLIBS=-lbsd
56#
57# Dynix/ptx V2.0.x
58#CFLAGS= -I$(INCLUDEDIR) -O -Xo
59#IRCDLIBS= -lsocket -linet -lnsl -lseq
60#
61# Dynix/ptx V1.x.x
62#IRCDLIBS= -lsocket -linet -lnsl -lseq
63#
64#use the following on SUN OS without nameserver libraries inside libc
65#IRCDLIBS=-lresolv
66#
67# Solaris 2
68#IRCDLIBS=-lsocket -lnsl -lresolv -L/usr/ucblib -R/usr/ucblib -lgen
69#
70# ESIX
71#CFLAGS=-O -I$(INCLUDEDIR) -I/usr/ucbinclude
72#IRCDLIBS=-L/usr/ucblib -L/usr/lib -lsocket -lucb -lns -lnsl
73#
74# LDFLAGS - flags to send the loader (ld). SunOS users may want to add
75# -Bstatic here.
76#
77#LDFLAGS=-Bstatic
78#
79#Dell SVR4
80#CC=gcc
81#CFLAGS= -I$(INCLUDEDIR) -O2
82#IRCDLIBS=-lsocket -lnsl -lucb
83
84# [CHANGEME]
85# IRCDMODE is the mode you want the binary to be.
86# The 4 at the front is important (allows for setuidness)
87#
88# WARNING: if you are making ircd SUID or SGID, check config.h to make sure
89# you are not defining CMDLINE_CONFIG
90IRCDMODE = 711
91
ed7bf1da 92# Objects that are optional due to optional libraries:
2c7d2c8f 93URL=@URL@
ed7bf1da
BM
94GEOIP_CLASSIC_OBJECTS=@GEOIP_CLASSIC_OBJECTS@
95GEOIP_CLASSIC_LIBS=@GEOIP_CLASSIC_LIBS@
96GEOIP_CLASSIC_CFLAGS=@GEOIP_CLASSIC_CFLAGS@
9c3d5dff 97GEOIP_MAXMIND_OBJECTS=@GEOIP_MAXMIND_OBJECTS@
98LIBMAXMINDDB_CFLAGS=@LIBMAXMINDDB_CFLAGS@
99LIBMAXMINDDB_LIBS=@LIBMAXMINDDB_LIBS@
3be92d02 100
aa5ee8b7 101# Where is your openssl binary
102OPENSSLPATH=@OPENSSLPATH@
103
5ad0278f 104CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS)
dbbcc691 105XLDFLAGS=@LDFLAGS_PRIVATELIBS@ @HARDEN_LDFLAGS@ @LDFLAGS@
106LDFLAGS=$(XLDFLAGS)
aa5ee8b7 107
108SHELL=/bin/sh
109SUBDIRS=src
29b7ea7e 110BINDIR=@BINDIR@
111INSTALL=@INSTALL@
aa5ee8b7 112RM=@RM@
113CP=@CP@
114TOUCH=@TOUCH@
115RES=
116all: build
117
118MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
119 'LDFLAGS=${LDFLAGS}' 'IRCDMODE=${IRCDMODE}' \
120 'RES=${RES}' 'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \
68ba94c1 121 'INCLUDEDIR=${INCLUDEDIR}' \
29b7ea7e 122 'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
5b361e69 123 'SHELL=${SHELL}' \
3dd67bf2 124 'CRYPTOLIB=${CRYPTOLIB}' \
d1b7ac4e 125 'CRYPTOINCLUDES=${CRYPTOINCLUDES}' \
2c7d2c8f 126 'URL=${URL}' \
ed7bf1da
BM
127 'GEOIP_CLASSIC_OBJECTS=${GEOIP_CLASSIC_OBJECTS}' \
128 'GEOIP_CLASSIC_LIBS=${GEOIP_CLASSIC_LIBS}' \
9c3d5dff 129 'GEOIP_CLASSIC_CFLAGS=${GEOIP_CLASSIC_CFLAGS}' \
130 'GEOIP_MAXMIND_OBJECTS=${GEOIP_MAXMIND_OBJECTS}' \
131 'LIBMAXMINDDB_CFLAGS=${LIBMAXMINDDB_CFLAGS}' \
132 'LIBMAXMINDDB_LIBS=${LIBMAXMINDDB_LIBS}'
aa5ee8b7 133
afcb0b2a 134custommodule:
45aeb1e6 135 @if test -z "${MODULEFILE}"; then echo "Please set MODULEFILE when calling \`\`make custommodule''. For example, \`\`make custommodule MODULEFILE=callerid''." >&2; exit 1; fi
9299b781 136 +cd src; ${MAKE} ${MAKEARGS} MODULEFILE=${MODULEFILE} 'EXLIBS=${EXLIBS}' custommodule
afcb0b2a 137
cc5e2bc4
NPB
138server: Makefile
139build: Makefile
aa5ee8b7 140 -@if [ ! -f include/setup.h ] ; then \
141 echo "Hmm...doesn't look like you've run Config..."; \
142 echo "Doing so now."; \
143 sh Config; \
144 fi
9299b781 145 @+for i in $(SUBDIRS); do \
aa5ee8b7 146 echo "Building $$i";\
147 ( cd $$i; ${MAKE} ${MAKEARGS} build; ) \
148 done
5e94fc9c 149 @echo ''
7f07c3f7 150 @echo '* UnrealIRCd compiled successfully'
4ef3b9f0 151 @echo '* YOU ARE NOT DONE YET! Run "${MAKE} install" to install UnrealIRCd !'
5e94fc9c 152 @echo ''
aa5ee8b7 153
154clean:
155 $(RM) -f *~ \#* core *.orig include/*.orig
9299b781 156 @+for i in $(SUBDIRS); do \
aa5ee8b7 157 echo "Cleaning $$i";\
158 ( cd $$i; ${MAKE} ${MAKEARGS} clean; ) \
159 done
160 -@if [ -f include/setup.h ] ; then \
161 echo "To really restart installation, remove include/setup.h" ; \
162 fi
163
164cleandir: clean
7ad515fb 165 rm -rf include/setup.h Makefile Settings
aa5ee8b7 166
0c091e94 167distclean: cleandir
5513b219 168 rm -rf extras/*.bak extras/*.tar extras/c-ares
0c091e94 169 rm -rf extras/c-ares-* extras/tre-*
5e94fc9c 170 rm -rf config.log config.settings *.pem ircd.* unrealircd
0c091e94
WP
171 rm -rf Makefile config.status
172
aa5ee8b7 173depend:
9299b781 174 @+for i in $(SUBDIRS); do \
aa5ee8b7 175 echo "Making dependencies in $$i";\
176 ( cd $$i; ${MAKE} ${MAKEARGS} depend; ) \
177 done
178
179install: all
ebe0a438
RS
180 $(INSTALL) -m 0700 -d $(DESTDIR)@BINDIR@
181 $(INSTALL) -m 0700 src/ircd $(DESTDIR)@BINDIR@/unrealircd
39688517 182 $(INSTALL) -m 0700 src/unrealircdctl $(DESTDIR)@BINDIR@/unrealircdctl
0e125abc 183 $(INSTALL) -m 0700 extras/unrealircd-upgrade-script $(DESTDIR)@BINDIR@/unrealircd-upgrade-script
ebe0a438 184 $(INSTALL) -m 0700 -d $(DESTDIR)@DOCDIR@
0e125abc 185 $(INSTALL) -m 0600 doc/Authors doc/coding-guidelines doc/tao.of.irc doc/KEYS doc/RELEASE-NOTES.md $(DESTDIR)@DOCDIR@
ebe0a438
RS
186 $(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@
187 $(INSTALL) -m 0600 doc/conf/*.default.conf $(DESTDIR)@CONFDIR@
188 $(INSTALL) -m 0600 doc/conf/*.optional.conf $(DESTDIR)@CONFDIR@
189 -@if [ ! -f "$(DESTDIR)@CONFDIR@/modules.sources.list" ] ; then \
190 $(INSTALL) -m 0600 doc/conf/modules.sources.list $(DESTDIR)@CONFDIR@ ; \
dfa83aa6 191 fi
ebe0a438
RS
192 -@if [ ! -f "$(DESTDIR)@CONFDIR@/spamfilter.conf" ] ; then \
193 $(INSTALL) -m 0600 doc/conf/spamfilter.conf $(DESTDIR)@CONFDIR@ ; \
ea3ac462 194 fi
ebe0a438
RS
195 -@extras/patches/patch_spamfilter_conf "$(DESTDIR)@CONFDIR@"
196 -@if [ ! -f "$(DESTDIR)@CONFDIR@/badwords.conf" ] ; then \
197 $(INSTALL) -m 0600 doc/conf/badwords.conf $(DESTDIR)@CONFDIR@ ; \
ea3ac462 198 fi
ebe0a438
RS
199 -@if [ ! -f "$(DESTDIR)@CONFDIR@/dccallow.conf" ] ; then \
200 $(INSTALL) -m 0600 doc/conf/dccallow.conf $(DESTDIR)@CONFDIR@ ; \
ea3ac462 201 fi
ebe0a438
RS
202 $(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/aliases
203 $(INSTALL) -m 0600 doc/conf/aliases/*.conf $(DESTDIR)@CONFDIR@/aliases
204 $(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/help
205 $(INSTALL) -m 0600 doc/conf/help/*.conf $(DESTDIR)@CONFDIR@/help
206 $(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/examples
207 $(INSTALL) -m 0600 doc/conf/examples/*.conf $(DESTDIR)@CONFDIR@/examples
208 $(INSTALL) -m 0700 unrealircd $(DESTDIR)@SCRIPTDIR@
209 $(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@
210 @rm -f $(DESTDIR)@MODULESDIR@/*.so 1>/dev/null 2>&1
211 $(INSTALL) -m 0700 src/modules/*.so $(DESTDIR)@MODULESDIR@
212 $(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/usermodes
213 @rm -f $(DESTDIR)@MODULESDIR@/usermodes/*.so 1>/dev/null 2>&1
214 $(INSTALL) -m 0700 src/modules/usermodes/*.so $(DESTDIR)@MODULESDIR@/usermodes
215 $(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/chanmodes
216 @rm -f $(DESTDIR)@MODULESDIR@/chanmodes/*.so 1>/dev/null 2>&1
217 $(INSTALL) -m 0700 src/modules/chanmodes/*.so $(DESTDIR)@MODULESDIR@/chanmodes
ebe0a438
RS
218 $(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/extbans
219 @rm -f $(DESTDIR)@MODULESDIR@/extbans/*.so 1>/dev/null 2>&1
220 $(INSTALL) -m 0700 src/modules/extbans/*.so $(DESTDIR)@MODULESDIR@/extbans
cbfcfa14
BM
221 $(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/rpc
222 @rm -f $(DESTDIR)@MODULESDIR@/rpc/*.so 1>/dev/null 2>&1
223 $(INSTALL) -m 0700 src/modules/rpc/*.so $(DESTDIR)@MODULESDIR@/rpc
09cf485d
BM
224 @#If the conf/ssl directory exists then rename it here to conf/tls
225 @#and add a symlink for backwards compatibility (so that f.e. certbot
226 @#doesn't randomly fail after an upgrade to U5).
ebe0a438
RS
227 -@if [ -d "$(DESTDIR)@CONFDIR@/ssl" ] ; then \
228 mv "$(DESTDIR)@CONFDIR@/ssl" "$(DESTDIR)@CONFDIR@/tls" ; \
229 ln -s "$(DESTDIR)@CONFDIR@/tls" "$(DESTDIR)@CONFDIR@/ssl" ; \
09cf485d 230 fi
ebe0a438
RS
231 $(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/tls
232 $(INSTALL) -m 0600 doc/conf/tls/curl-ca-bundle.crt $(DESTDIR)@CONFDIR@/tls
185b4e05 233 @# delete modules/cap directory, to avoid confusing with U4 to U5 upgrades:
ebe0a438
RS
234 rm -rf $(DESTDIR)@MODULESDIR@/cap
235 $(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/third
236 @rm -f $(DESTDIR)@MODULESDIR@/third/*.so 1>/dev/null 2>&1
dfa83aa6 237 @#This step can fail with zero files, so we ignore exit status:
ebe0a438
RS
238 -$(INSTALL) -m 0700 src/modules/third/*.so $(DESTDIR)@MODULESDIR@/third
239 $(INSTALL) -m 0700 -d $(DESTDIR)@TMPDIR@
240 $(INSTALL) -m 0700 -d $(DESTDIR)@CACHEDIR@
241 $(INSTALL) -m 0700 -d $(DESTDIR)@PERMDATADIR@
242 $(INSTALL) -m 0700 -d $(DESTDIR)@LOGDIR@
243 -@if [ ! -f "$(DESTDIR)@CONFDIR@/tls/server.cert.pem" ] ; then \
244 $(INSTALL) -m 0600 server.req.pem $(DESTDIR)@CONFDIR@/tls ; \
245 $(INSTALL) -m 0600 server.key.pem $(DESTDIR)@CONFDIR@/tls ; \
246 $(INSTALL) -m 0600 server.cert.pem $(DESTDIR)@CONFDIR@/tls ; \
c916651e 247 fi
5e068a2f
BM
248 @rm -f $(DESTDIR)@SCRIPTDIR@/source
249 ln -s @BUILDDIR@ $(DESTDIR)@SCRIPTDIR@/source
5e94fc9c
BM
250 @echo ''
251 @echo '* UnrealIRCd is now installed.'
252
253 -@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
254 echo '* Leave this directory and run "cd @SCRIPTDIR@" now' ; \
255 fi
256 @echo '* Directory layout:'
257 -@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
258 echo ' * Base directory: @SCRIPTDIR@' ; \
259 fi
260 @echo ' * Configuration files: @CONFDIR@'
261 @echo ' * Log files: @LOGDIR@'
262 @echo ' * Modules: @MODULESDIR@'
263 @echo '* To start/stop UnrealIRCd run: @SCRIPTDIR@/unrealircd"'
264 @echo ''
265 @echo '* Consult the documentation online at:'
6acfa340 266 @echo ' * https://www.unrealircd.org/docs/'
5e94fc9c 267 @echo ' * https://www.unrealircd.org/docs/FAQ'
d41d7bdc
BM
268 @echo '* You may also wish to install a cron job to ensure UnrealIRCd is always running:'
269 @echo ' * https://www.unrealircd.org/docs/Cron_job'
5e94fc9c
BM
270 @echo ''
271 -@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
272 echo 'Again, be sure to change to the @SCRIPTDIR@ directory!' ; \
1418ea87 273 fi
29b7ea7e 274
2b0afacd 275pem: extras/tls.cnf
fea09b66
BM
276 @echo "Generating server key..."
277 $(OPENSSLPATH) ecparam -out server.key.pem -name secp384r1 -genkey
278 @echo "Generating certificate request..."
aa5ee8b7 279 $(OPENSSLPATH) req -new \
2b0afacd 280 -config extras/tls.cnf -sha256 -out server.req.pem \
fea09b66
BM
281 -key server.key.pem -nodes
282 @echo "Generating self-signed certificate..."
c5865925 283 $(OPENSSLPATH) req -x509 -days 3650 -sha256 -nodes -in server.req.pem \
aa5ee8b7 284 -key server.key.pem -out server.cert.pem
fea09b66 285 @echo "Setting permissions on server.*.pem files..."
aa5ee8b7 286 chmod o-rwx server.req.pem server.key.pem server.cert.pem
287 chmod g-rwx server.req.pem server.key.pem server.cert.pem
bebebf6c 288
9299b781 289Makefile: config.status Makefile.in
cc5e2bc4 290 ./config.status