]>
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 |
f81d2207 | 37 | IRCDLIBS=@IRCDLIBS@ @TRE_LIBS@ @PCRE2_LIBS@ @CARES_LIBS@ @PTHREAD_LIBS@ |
aa5ee8b7 | 38 | CRYPTOLIB=@CRYPTOLIB@ |
39 | OPENSSLINCLUDES= | |
40 | ||
bae1dcf1 | 41 | XCFLAGS=@PTHREAD_CFLAGS@ @TRE_CFLAGS@ @PCRE2_CFLAGS@ @CARES_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 | ||
3be92d02 | 92 | URL=@URL@ |
93 | ||
aa5ee8b7 | 94 | # [CHANGEME] |
95 | # If you get a link-time error dealing with strtoul, comment out | |
96 | # this line. | |
97 | # STRTOUL= strtoul.o | |
98 | STRTOUL=@STRTOUL@ | |
99 | ||
100 | # [CHANGEME] | |
805f1988 | 101 | # If you get crashes around a specific number of clients, and that |
102 | # client load comes close or a little over the system-defined value of | |
103 | # FD_SETSIZE, override it here and see what happens. You may override | |
104 | # the system FD_SETSIZE by setting the FD_SETSIZE Makefile variable to | |
105 | # -DFD_SETSIZE=<some number>. | |
aa5ee8b7 | 106 | FD_SETSIZE=@FD_SETSIZE@ |
107 | ||
108 | # Where is your openssl binary | |
109 | OPENSSLPATH=@OPENSSLPATH@ | |
110 | ||
fd35f965 | 111 | CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS) $(FD_SETSIZE) |
9252ce30 | 112 | LDFLAGS=@LDFLAGS_PRIVATELIBS@ @HARDEN_LDFLAGS@ |
aa5ee8b7 | 113 | |
114 | SHELL=/bin/sh | |
115 | SUBDIRS=src | |
29b7ea7e | 116 | BINDIR=@BINDIR@ |
117 | INSTALL=@INSTALL@ | |
aa5ee8b7 | 118 | RM=@RM@ |
119 | CP=@CP@ | |
120 | TOUCH=@TOUCH@ | |
121 | RES= | |
122 | all: build | |
123 | ||
124 | MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \ | |
125 | 'LDFLAGS=${LDFLAGS}' 'IRCDMODE=${IRCDMODE}' \ | |
126 | 'RES=${RES}' 'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \ | |
68ba94c1 | 127 | 'INCLUDEDIR=${INCLUDEDIR}' \ |
29b7ea7e | 128 | 'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \ |
aa5ee8b7 | 129 | 'SHELL=${SHELL}' 'STRTOUL=${STRTOUL}' \ |
3dd67bf2 | 130 | 'CRYPTOLIB=${CRYPTOLIB}' \ |
d1b7ac4e | 131 | 'CRYPTOINCLUDES=${CRYPTOINCLUDES}' \ |
d1b7ac4e | 132 | 'URL=${URL}' |
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' |
5e94fc9c BM |
151 | @echo '* YOU ARE NOT DONE YET! Run "make install" to install UnrealIRCd !' |
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 WP |
167 | distclean: cleandir |
168 | rm -rf extras/*.bak extras/regexp extras/*.tar extras/c-ares | |
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 | |
5e94fc9c BM |
180 | $(INSTALL) -m 0700 -d @BINDIR@ |
181 | $(INSTALL) -m 0700 src/ircd @BINDIR@/unrealircd | |
182 | $(INSTALL) -m 0700 -d @DOCDIR@ | |
183 | $(INSTALL) -m 0600 doc/Authors doc/coding-guidelines doc/tao.of.irc @DOCDIR@ | |
184 | $(INSTALL) -m 0700 -d @CONFDIR@ | |
ea3ac462 | 185 | $(INSTALL) -m 0600 doc/conf/*.default.conf @CONFDIR@ |
50801f50 | 186 | $(INSTALL) -m 0600 doc/conf/*.optional.conf @CONFDIR@ |
ea3ac462 BM |
187 | -@if [ ! -f "@CONFDIR@/spamfilter.conf" ] ; then \ |
188 | $(INSTALL) -m 0600 doc/conf/spamfilter.conf @CONFDIR@ ; \ | |
189 | fi | |
190 | -@if [ ! -f "@CONFDIR@/badwords.conf" ] ; then \ | |
191 | $(INSTALL) -m 0600 doc/conf/badwords.conf @CONFDIR@ ; \ | |
192 | fi | |
193 | -@if [ ! -f "@CONFDIR@/dccallow.conf" ] ; then \ | |
194 | $(INSTALL) -m 0600 doc/conf/dccallow.conf @CONFDIR@ ; \ | |
195 | fi | |
5e94fc9c BM |
196 | $(INSTALL) -m 0700 -d @CONFDIR@/aliases |
197 | $(INSTALL) -m 0600 doc/conf/aliases/*.conf @CONFDIR@/aliases | |
d99d01e3 BM |
198 | $(INSTALL) -m 0700 -d @CONFDIR@/help |
199 | $(INSTALL) -m 0600 doc/conf/help/*.conf @CONFDIR@/help | |
200 | $(INSTALL) -m 0700 -d @CONFDIR@/examples | |
201 | $(INSTALL) -m 0600 doc/conf/examples/*.conf @CONFDIR@/examples | |
5e94fc9c BM |
202 | $(INSTALL) -m 0700 -d @CONFDIR@/ssl |
203 | $(INSTALL) -m 0600 doc/conf/ssl/curl-ca-bundle.crt @CONFDIR@/ssl | |
204 | $(INSTALL) -m 0700 unrealircd @SCRIPTDIR@ | |
205 | $(INSTALL) -m 0700 -d @MODULESDIR@ | |
206 | $(INSTALL) -m 0700 src/modules/*.so @MODULESDIR@ | |
207 | $(INSTALL) -m 0700 -d @MODULESDIR@/usermodes | |
208 | $(INSTALL) -m 0700 src/modules/usermodes/*.so @MODULESDIR@/usermodes | |
209 | $(INSTALL) -m 0700 -d @MODULESDIR@/chanmodes | |
210 | $(INSTALL) -m 0700 src/modules/chanmodes/*.so @MODULESDIR@/chanmodes | |
c0f18b3e BM |
211 | $(INSTALL) -m 0700 -d @MODULESDIR@/snomasks |
212 | $(INSTALL) -m 0700 src/modules/snomasks/*.so @MODULESDIR@/snomasks | |
5e94fc9c BM |
213 | $(INSTALL) -m 0700 -d @MODULESDIR@/extbans |
214 | $(INSTALL) -m 0700 src/modules/extbans/*.so @MODULESDIR@/extbans | |
ea651384 BM |
215 | $(INSTALL) -m 0700 -d @MODULESDIR@/cap |
216 | $(INSTALL) -m 0700 src/modules/cap/*.so @MODULESDIR@/cap | |
bd21ea90 BM |
217 | $(INSTALL) -m 0700 -d @MODULESDIR@/third |
218 | @#Ugly stuff to detect 0 files in this directory: | |
219 | @+for f in src/modules/third/*.so; do \ | |
d9756b82 | 220 | [ -e $f ] && $(INSTALL) -m 0700 src/modules/third/*.so @MODULESDIR@/third || echo; \ |
bd21ea90 | 221 | done |
5e94fc9c BM |
222 | $(INSTALL) -m 0700 -d @TMPDIR@ |
223 | $(INSTALL) -m 0700 -d @CACHEDIR@ | |
e5ec2a64 | 224 | $(INSTALL) -m 0700 -d @PERMDATADIR@ |
5e94fc9c | 225 | $(INSTALL) -m 0700 -d @LOGDIR@ |
5e94fc9c BM |
226 | -@if [ ! -f "@CONFDIR@/ssl/server.cert.pem" ] ; then \ |
227 | $(INSTALL) -m 0600 server.req.pem @CONFDIR@/ssl ; \ | |
228 | $(INSTALL) -m 0600 server.key.pem @CONFDIR@/ssl ; \ | |
229 | $(INSTALL) -m 0600 server.cert.pem @CONFDIR@/ssl ; \ | |
c916651e | 230 | fi |
5e94fc9c BM |
231 | @echo '' |
232 | @echo '* UnrealIRCd is now installed.' | |
233 | ||
234 | -@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \ | |
235 | echo '* Leave this directory and run "cd @SCRIPTDIR@" now' ; \ | |
236 | fi | |
237 | @echo '* Directory layout:' | |
238 | -@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \ | |
239 | echo ' * Base directory: @SCRIPTDIR@' ; \ | |
240 | fi | |
241 | @echo ' * Configuration files: @CONFDIR@' | |
242 | @echo ' * Log files: @LOGDIR@' | |
243 | @echo ' * Modules: @MODULESDIR@' | |
244 | @echo '* To start/stop UnrealIRCd run: @SCRIPTDIR@/unrealircd"' | |
245 | @echo '' | |
246 | @echo '* Consult the documentation online at:' | |
507d88cf | 247 | @echo ' * https://www.unrealircd.org/docs/UnrealIRCd_4_documentation' |
5e94fc9c | 248 | @echo ' * https://www.unrealircd.org/docs/FAQ' |
d41d7bdc BM |
249 | @echo '* You may also wish to install a cron job to ensure UnrealIRCd is always running:' |
250 | @echo ' * https://www.unrealircd.org/docs/Cron_job' | |
5e94fc9c BM |
251 | @echo '' |
252 | -@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \ | |
253 | echo 'Again, be sure to change to the @SCRIPTDIR@ directory!' ; \ | |
1418ea87 | 254 | fi |
29b7ea7e | 255 | |
5e94fc9c | 256 | ### TODO: all the stuff below ;) ### |
bebebf6c | 257 | pem: src/ssl.cnf |
aa5ee8b7 | 258 | @echo "Generating certificate request .. " |
259 | $(OPENSSLPATH) req -new \ | |
a5dc1600 | 260 | -config src/ssl.cnf -sha256 -out server.req.pem \ |
aa5ee8b7 | 261 | -keyout server.key.pem -nodes |
262 | @echo "Generating self-signed certificate .. " | |
a5dc1600 | 263 | $(OPENSSLPATH) req -x509 -days 3650 -sha256 -in server.req.pem \ |
aa5ee8b7 | 264 | -key server.key.pem -out server.cert.pem |
265 | @echo "Generating fingerprint .." | |
a5dc1600 | 266 | $(OPENSSLPATH) x509 -subject -dates -sha256 -fingerprint -noout \ |
aa5ee8b7 | 267 | -in server.cert.pem |
268 | @echo "Setting o-rwx & g-rwx for files... " | |
269 | chmod o-rwx server.req.pem server.key.pem server.cert.pem | |
270 | chmod g-rwx server.req.pem server.key.pem server.cert.pem | |
bebebf6c | 271 | @echo "Done!. If you want to encrypt the private key, run" |
272 | @echo "make encpem" | |
273 | ||
274 | encpem: server.key.pem | |
275 | @echo "Encrypting server key .." | |
276 | $(OPENSSLPATH) rsa -in server.key.pem -out server.key.c.pem -des3 | |
277 | -@if [ -f server.key.c.pem ] ; then \ | |
278 | echo "Replacing unencrypted with encrypted .." ; \ | |
279 | cp server.key.c.pem server.key.pem ; \ | |
280 | rm -f server.key.c.pem ; \ | |
281 | fi | |
282 | ||
9299b781 | 283 | Makefile: config.status Makefile.in |
cc5e2bc4 | 284 | ./config.status |