]>
Commit | Line | Data |
---|---|---|
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 | ||
22 | CC=@CC@ | |
101d2dd6 | 23 | INCLUDEDIR=@UNRLINCDIR@ |
aa5ee8b7 | 24 | NETWORKSDIR= |
25 | FROMDOS=/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 | 37 | IRCDLIBS=@IRCDLIBS@ @PCRE2_LIBS@ @ARGON2_LIBS@ @CARES_LIBS@ @SODIUM_LIBS@ @JANSSON_LIBS@ @PTHREAD_LIBS@ |
aa5ee8b7 | 38 | CRYPTOLIB=@CRYPTOLIB@ |
39 | OPENSSLINCLUDES= | |
40 | ||
f89348d2 | 41 | XCFLAGS=@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 | |
90 | IRCDMODE = 711 | |
91 | ||
ed7bf1da | 92 | # Objects that are optional due to optional libraries: |
2c7d2c8f | 93 | URL=@URL@ |
ed7bf1da BM |
94 | GEOIP_CLASSIC_OBJECTS=@GEOIP_CLASSIC_OBJECTS@ |
95 | GEOIP_CLASSIC_LIBS=@GEOIP_CLASSIC_LIBS@ | |
96 | GEOIP_CLASSIC_CFLAGS=@GEOIP_CLASSIC_CFLAGS@ | |
9c3d5dff | 97 | GEOIP_MAXMIND_OBJECTS=@GEOIP_MAXMIND_OBJECTS@ |
98 | LIBMAXMINDDB_CFLAGS=@LIBMAXMINDDB_CFLAGS@ | |
99 | LIBMAXMINDDB_LIBS=@LIBMAXMINDDB_LIBS@ | |
3be92d02 | 100 | |
aa5ee8b7 | 101 | # Where is your openssl binary |
102 | OPENSSLPATH=@OPENSSLPATH@ | |
103 | ||
5ad0278f | 104 | CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS) |
dbbcc691 | 105 | XLDFLAGS=@LDFLAGS_PRIVATELIBS@ @HARDEN_LDFLAGS@ @LDFLAGS@ |
106 | LDFLAGS=$(XLDFLAGS) | |
aa5ee8b7 | 107 | |
108 | SHELL=/bin/sh | |
109 | SUBDIRS=src | |
29b7ea7e | 110 | BINDIR=@BINDIR@ |
111 | INSTALL=@INSTALL@ | |
aa5ee8b7 | 112 | RM=@RM@ |
113 | CP=@CP@ | |
114 | TOUCH=@TOUCH@ | |
115 | RES= | |
116 | all: build | |
117 | ||
118 | MAKEARGS = '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 | 134 | custommodule: |
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 |
138 | server: Makefile |
139 | build: 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 | |
154 | clean: | |
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 | ||
164 | cleandir: clean | |
7ad515fb | 165 | rm -rf include/setup.h Makefile Settings |
aa5ee8b7 | 166 | |
0c091e94 | 167 | distclean: 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 | 173 | depend: |
9299b781 | 174 | @+for i in $(SUBDIRS); do \ |
aa5ee8b7 | 175 | echo "Making dependencies in $$i";\ |
176 | ( cd $$i; ${MAKE} ${MAKEARGS} depend; ) \ | |
177 | done | |
178 | ||
179 | install: 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 | 275 | pem: 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 | 289 | Makefile: config.status Makefile.in |
cc5e2bc4 | 290 | ./config.status |