1# $MirOS: src/etc/Makefile,v 1.53 2014/06/09 13:49:36 tg Exp $
2# $OpenBSD: Makefile,v 1.226 2005/05/26 23:06:06 mcbride Exp $
3
4TZDIR=		/usr/share/zoneinfo
5LOCALTIME?=	UTC
6NOOBJ=		yes
7
8.include <bsd.own.mk>
9
10# -rw-r--r--
11BINOWN=	root
12BIN1=	anacron ccd.conf changelist cronrun csh.login daily dhclient.conf \
13	dhcpd.conf dhcpd.interfaces etc.${MACHINE}/disktab exports \
14	ftpchroot ftpusers gettytab group hosts hosts.lpd \
15	locate.rc login.conf \
16	mailer.conf man.conf moduli monthly motd mrouted.conf \
17	myname netstart networks newsyslog.conf ntpd.conf \
18	pf.os phones printcap profile protocols rbootd.conf \
19	rc rc.conf rc.local rc.securelevel rc.shutdown remote \
20	rpc security sensorsd.conf services shells weekly wsconsctl.conf
21
22# machine dependent parts
23BINMD=	make.cfg sysctl.conf syslog.conf
24
25# -rw-rw-r--
26BIN2=	motd
27
28# Use NOGZIP on architectures where the gzip'ing would take too much time
29# (pmax or slower :-)).  This way you get only tar'ed snap files and you can
30# gzip them on a faster machine
31.ifndef NOGZIP
32GZIP?=		gzip
33GZIPFLAGS?=	-9
34GZIPEXT?=	.gz
35.else
36GZIP=		cat
37GZIPFLAGS=
38GZIPEXT=
39.endif
40SKIPDIR?=	# empty
41
42all clean cleandir depend etc install lint:
43
44.if !defined(DESTDIR) || empty(DESTDIR)
45etc-files:
46	@echo setenv DESTDIR before trying this!
47	@exit 1
48.else
49etc-files:
50	${INSTALL} -c -o ${BINOWN} -g ${CONFGRP} -m 644 ${BIN1} ${DESTDIR}/etc/
51	cat fbtab.head etc.${MACHINE}/fbtab fbtab.tail >${DESTDIR}/etc/fbtab
52	${SHELL} ${.CURDIR}/ttys.pty ${MACHINE} >${DESTDIR}/etc/ttys.dist
53.  for _i in ${BINMD}
54	if [ -e ${.CURDIR}/etc.${MACHINE}/${_i}.md ]; then \
55		sed -e '/@@MDPART@@/r${.CURDIR}/etc.${MACHINE}/${_i}.md' \
56		    -e '//d' ${.CURDIR}/${_i}; \
57	else \
58		sed -e '/@@MDPART@@/d' ${.CURDIR}/${_i}; \
59	fi >${DESTDIR}/etc/${_i}
60.  endfor
61	cd ${DESTDIR}/etc && \
62	    chown ${BINOWN}:${CONFGRP} fbtab ttys.dist ${BINMD} && \
63	    chmod 644 fbtab ttys.dist ${BINMD}
64	${INSTALL} -c -o ${BINOWN} -g ${CONFGRP} -m 664 ${BIN2} ${DESTDIR}/etc/
65	${INSTALL} -c -o root -g wheel -m 600 hosts.equiv ${DESTDIR}/etc/
66	${INSTALL} -c -o root -g wheel -m 600 crontab ${DESTDIR}/var/cron/tabs/root
67	${INSTALL} -c -o root -g wheel -m 600 master.passwd ${DESTDIR}/etc/
68	pwd_mkdb -p -d ${DESTDIR}/etc /etc/master.passwd
69	${INSTALL} -c -o root -g ${CONFGRP} -m 640 inetd.conf ${DESTDIR}/etc/
70	${INSTALL} -c -o root -g wheel -m 640 pf.conf ${DESTDIR}/etc/
71	${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 555 \
72	    etc.${MACHINE}/MAKEDEV ${DESTDIR}/dev/
73	${INSTALL} -c -o root -g wheel -m 600 root.profile ${DESTDIR}/.profile
74	cd skel; \
75		${INSTALL} -c -o root -g wheel -m 644 calendar \
76		    ${DESTDIR}/etc/skel/.etc/calendar/calendar; \
77		${INSTALL} -c -o root -g wheel -m 644 dot.Xresources \
78		    ${DESTDIR}/etc/skel/.Xresources; \
79		${INSTALL} -c -o root -g wheel -m 644 dot.mailrc \
80		    ${DESTDIR}/etc/skel/.mailrc
81	cd mtree; \
82		${INSTALL} -c -o root -g wheel -m 600 special \
83		    ${DESTDIR}/etc/mtree/; \
84		${INSTALL} -c -o root -g wheel -m 444 4.4BSD.dist \
85		    ${DESTDIR}/etc/mtree/
86	cd ppp; \
87		${INSTALL} -c -o root -g wheel -m 600 \
88		    chap-secrets options.sample pap-secrets \
89		    ppp.conf.sample ppp.secret.sample \
90			${DESTDIR}/etc/ppp/; \
91		${INSTALL} -c -o root -g wheel -m 600 \
92		    isp.sample isp.chat.sample \
93			${DESTDIR}/etc/ppp/peers/; \
94		${INSTALL} -c -o root -g wheel -m 755 \
95		    ip-up ip-down ppp.linkup.sample ppp.linkdown.sample \
96			${DESTDIR}/etc/ppp/
97	cd systrace; \
98		${INSTALL} -c -o root -g wheel -m 600 usr_sbin_lpd \
99		    ${DESTDIR}/etc/systrace/
100	/bin/rm -f ${DESTDIR}/etc/localtime
101	ln -s ${TZDIR}/${LOCALTIME} ${DESTDIR}/etc/localtime
102	/bin/rm -f ${DESTDIR}/etc/rmt
103	ln -s /usr/sbin/rmt ${DESTDIR}/etc/rmt
104	${INSTALL} -c -o root -g wheel -m 644 minfree \
105		${DESTDIR}/var/crash/
106	${INSTALL} -c -o ${BINOWN} -g operator -m 664 /dev/null \
107		${DESTDIR}/etc/dumpdates
108.  if ${MACHINE} == "i386"
109	${INSTALL} -c -o root -g wheel -m 644 isdnd.rc.sample \
110		${DESTDIR}/etc/isdn/
111	${INSTALL} -c -o root -g wheel -m 644 isdnd.sppp.sample \
112		${DESTDIR}/etc/isdn/
113.  endif
114	${INSTALL} -c -o root -g crontab -m 660 /dev/null \
115		${DESTDIR}/var/cron/at.deny
116	${INSTALL} -c -o root -g crontab -m 660 /dev/null \
117		${DESTDIR}/var/cron/cron.deny
118	${INSTALL} -c -o root -g wheel -m 444 /dev/null \
119		${DESTDIR}/var/db/locate.database
120	${INSTALL} -c -o ${BINOWN} -g wheel -m 640 /dev/null \
121		${DESTDIR}/var/log/messages
122	${INSTALL} -c -o ${BINOWN} -g wheel -m 640 /dev/null \
123		${DESTDIR}/var/log/sendmail.st
124	${INSTALL} -c -o ${BINOWN} -g wheel -m 640 /dev/null \
125		${DESTDIR}/var/log/wtmp
126	${INSTALL} -c -o daemon -g staff -m 664 /dev/null \
127		${DESTDIR}/var/msgs/bounds
128	${INSTALL} -c -o ${BINOWN} -g utmp -m 664 /dev/null \
129		${DESTDIR}/var/run/utmp
130.  if ${SKIPDIR:Mgnu/usr.sbin/sendmail}
131	@echo "Warning: skipping sendmail"
132.  else
133	cd ../gnu/usr.sbin/sendmail/cf/cf && exec ${MAKE} distribution
134.  endif
135.  for _i in lib/libssl bin/mksh usr.bin/indent usr.bin/mail usr.bin/ssh
136	cd ../${_i} && exec ${MAKE} distribution
137.  endfor
138.  if ${CROSS_MODE:L} != "yes"
139.    for _i in usr.sbin/httpd gnu/usr.bin/anoncvs gnu/usr.bin/lynx
140.      if ${SKIPDIR:M${_i}}
141	@echo "Warning: skipping ${_i}"
142.      else
143	cd ../${_i}; f=Makefile.bsd-wrapper; [[ -e $$f ]] || f=Makefile; \
144	    exec ${MAKE} -f $$f distribution
145.      endif
146.    endfor
147.  endif
148	${INSTALL} -c -o root -g wheel -m 440 ../usr.bin/sudo/sudoers \
149	    ${DESTDIR}/etc/sudoers
150	cd ${DESTDIR}/etc/ssl/certs && ${SHELL} ${.CURDIR}/ssl.certs.shar && \
151	    chown ${BINOWN}:${CONFGRP} * && chmod 444 * && \
152	    ${SHELL} ${.CURDIR}/ssl.links.shar
153	${INSTALL} -c -o ${BINOWN} -g ${CONFGRP} -m 644 spamd.conf \
154	    ${DESTDIR}/etc/mail/
155	${INSTALL} -c -o ${BINOWN} -g ${CONFGRP} -m 644 ssh_known_hosts \
156	    ${DESTDIR}/etc/ssh/
157	${INSTALL} -c -o 0 -g 0 -m 644 ssh_root_config \
158	    ${DESTDIR}/etc/ssh/root:config
159.endif # destdir
160
161MAKEDEVARCHS+= i386
162MAKEDEVARCHS+= sparc
163
164clean:
165	rm -f etc.${MACHINE}/MAKEDEV
166
167cleandir:
168	cd ${.CURDIR}; for m in ${MAKEDEVARCHS}; do \
169	    ${MAKE} MACHINE=$$m clean; done
170
171MAKEDEVSRC=	MAKEDEV.mi MAKEDEV.sub MAKEDEV.common
172MAKEDEVDOC=	MAKEDEV.man MAKEDEV.mansub MAKEDEV.common
173m4: etc.${M}/MAKEDEV
174man: ${.CURDIR}/../share/man/man8/man8.${M}/MAKEDEV.8
175
176etc.${M}/MAKEDEV: ${MAKEDEVSRC} etc.${M}/MAKEDEV.md
177	@echo "==> etc.${M}/MAKEDEV"
178	m4 -DMACHINE=${M} MAKEDEV.mi >etc.${M}/.MAKEDEV.tmp && \
179	    mv etc.${M}/.MAKEDEV.tmp etc.${M}/MAKEDEV || \
180	    rm etc.${M}/.MAKEDEV.tmp
181
182${.CURDIR}/../share/man/man8/man8.${M}/MAKEDEV.8: ${MAKEDEVDOC} etc.${M}/MAKEDEV.md
183	m4 -DMACHINE=${M} MAKEDEV.man >$@
184
185allarchs: ${MAKEDEVSRC} ${MAKEDEVDOC}
186	cd ${.CURDIR}; for m in ${MAKEDEVARCHS}; do \
187	    ${MAKE} M=$$m m4 man; done
188	@echo "================================="
189	@echo " Don't forget to update your own"
190	@echo " '/dev/MAKEDEV' script manually!"
191	@echo "================================="
192
193GENERATED_FILES=
194
195.for _i in ${BINMD}
196GENERATED_FILES+= ${_i}.generated
197
198.  for _j in etc.${MACHINE}/${_i}.md etc.${MACHINE_ARCH}/${_i}.md ${_i}
199.    if exists(${_j})
200${_i}.generated: ${_j}
201.    endif
202.  endfor
203
204${_i}.generated:
205	if [ -e ${.CURDIR}/etc.${MACHINE}/${_i}.md ]; then \
206		sed -e '/@@MDPART@@/r${.CURDIR}/etc.${MACHINE}/${_i}.md' \
207		    -e '//d'; \
208	elif [ -e ${.CURDIR}/etc.${MACHINE_ARCH}/${_i}.md ]; then \
209		sed -e '/@@MDPART@@/r${.CURDIR}/etc.${MACHINE_ARCH}/${_i}.md' \
210		    -e '//d'; \
211	else \
212		sed -e '/@@MDPART@@/d'; \
213	fi <${.CURDIR}/${_i} >$@
214.endfor
215
216make-generated: ${GENERATED_FILES}
217
218clean-generated:
219	-rm -f ${GENERATED_FILES}
220
221.ifdef DESTDIR
222install-generated: make-generated
223.  for _i in ${BINMD}
224	${INSTALL} -c -o ${BINOWN} -g ${CONFGRP} -m 644 \
225	    ${_i}.generated ${DESTDIR}/etc/${_i}
226.  endfor
227.else
228install-generated:
229	@echo "Set DESTDIR before trying this!"; false
230.endif
231
232DHSIZE=	1024 1536 2048 3072 4096 5120 6144
233update-moduli:
234	{ \
235		echo '# $$MirSecuCron$$'; \
236		echo '# $$MirOS: src/etc/Makefile,v 1.53 2014/06/09 13:49:36 tg Exp $$'; \
237		echo '#-'; \
238		echo '# Time Type Tests Tries Size Generator Modulus'; \
239		for i in ${DHSIZE}; do \
240			ssh-keygen -b $$i -G /dev/stdout; \
241		done | ssh-keygen -T /dev/stdout; \
242	} >moduli
243
244.PHONY: all clean cleandir depend etc install lint etc-files \
245	clean cleandir m4 man allarchs make-generated clean-generated \
246	install-generated update-moduli
247
248.include <bsd.prog.mk>
249