1#	$NetBSD: Makefile.inc,v 1.49 2024/04/22 14:41:26 nia Exp $
2#
3# Makefile for sysinst
4
5.if exists(${.CURDIR}/../../../Makefile.inc)
6.include "${.CURDIR}/../../../Makefile.inc"
7.endif
8
9PROG=		sysinst
10MAN=		sysinst.8
11
12WARNS=		4
13
14SRCS+=	menu_defs.c msg_defs.c main.c install.c upgrade.c \
15	txtwalk.c run.c factor.c net.c disks.c disks_lfs.c util.c geom.c \
16	label.c target.c md.c sizemultname.c configmenu.c checkrc.c \
17	disklabel.c partitions.c part_edit.c
18
19SRCS+=	${MD_OPTIONS:MAOUT2ELF:S/AOUT2ELF/aout2elf.c/}
20SRCS+=	${CPPFLAGS:M-DWSKBD:S/-DWSKBD/wskbd.c/}
21SRCS+=	${NODISKLABEL:D:Ubsddisklabel.c}
22SRCS+=	${NOPARTMAN:D:Upartman.c}
23
24.PATH: ${.CURDIR}/../../../../sbin/fsck
25SRCS+=partutil.c
26
27DPSRCS+= defs.h
28
29SYSINSTLANG?=	en
30LANGUAGES?=	de en es fr pl
31
32MENUS_MI=	menus.mi
33MENUS_MI+=	${NOPARTMAN:D:Umenus.pm}
34
35.if ${NO_GPT:Uno} != "yes"
36CPPFLAGS+=	-DHAVE_GPT
37GPT_DIR=${.CURDIR}/../../../../sbin/gpt
38SRCS+=	gpt.c gpt_uuid.c
39CPPFLAGS.gpt_uuid.c+=	-I${GPT_DIR}
40CPPFLAGS.gpt.c+=	-I${GPT_DIR}
41.endif
42.if ${NO_MBR:Uyes} != "yes"
43CPPFLAGS+=	-DHAVE_MBR
44SRCS+=	mbr.c
45.endif
46.if ${NO_CLONES:Uno} == "yes"
47CPPFLAGS+=	-DNO_CLONES
48.endif
49
50.if ${CHECK_ENTROPY:Uyes} != "no"
51MENUS_MI+=	menus.entropy
52CPPFLAGS+=	-DCHECK_ENTROPY=1
53.endif
54
55MSG_MD?=	msg.md.${SYSINSTLANG}
56MENUS_MD?=	menus.md.${SYSINSTLANG}
57
58.include <bsd.own.mk>		# for mk.conf
59#.include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib"
60
61DISTRIBVER!=	${HOST_SH} ${NETBSDSRCDIR}/sys/conf/osrelease.sh
62DISTRIBVERDEP=	${NETBSDSRCDIR}/sys/sys/param.h \
63		${NETBSDSRCDIR}/sys/conf/osrelease.sh
64
65_MKSHTARGET_CREATE?=	${_MKSHMSG_CREATE} ${.CURDIR:T}/${.TARGET}
66
67DPADD=		${LIBCURSES} ${LIBTERMLIB} ${LIBPROP} ${LIBUTIL}
68LDADD=		-lcurses -ltermlib -lprop -lutil
69
70UNIF_AWK=	${.CURDIR}/../../unif.awk
71MSG_XLAT_SH=	${.CURDIR}/../../msg_xlat.sh
72MSG_CMP_SH=	${.CURDIR}/../../msg_cmp.sh
73
74SETS_TAR_SUFF=${"${USE_XZ_SETS:Uno}"!="no":?"tar.xz":"tgz"}
75
76.if ${MKBSDTAR:Uno} == "no"
77CPPFLAGS+=	-DUSING_PAXASTAR
78.endif
79
80.if ${MKCOMPAT:Uno} != "no"
81CPPFLAGS+=	-DHAVE_BASE32
82.endif
83
84.if ${MKCOMPAT:Uno} != "no" && \
85    (${MACHINE_ARCH} == "mips64eb" || ${MACHINE_ARCH} == "mips64el")
86CPPFLAGS+=	-DHAVE_BASE64
87.endif
88
89.if ${MKCOMPAT:Uno} != "no" && ${MKDEBUG:Uno} != "no"
90CPPFLAGS+=	-DHAVE_DEBUG32
91.endif
92
93.if ${MKCOMPAT:Uno} != "no" && ${MKDEBUG:Uno} != "no" && \
94    (${MACHINE_ARCH} == "mips64eb" || ${MACHINE_ARCH} == "mips64el")
95CPPFLAGS+=	-DHAVE_DEBUG64
96.endif
97
98.if ${MKDTB:Uno} != "no"
99CPPFLAGS+=	-DHAVE_DTB
100.endif
101
102.if ${MKKMOD:Uno} != "no"
103CPPFLAGS+=	-DHAVE_MODULES
104.endif
105
106CATALOGDIR=	/usr/share/sysinst/catalog
107CPPFLAGS+=	-I. -I${.CURDIR}/../.. -I${.CURDIR} \
108		-I${.CURDIR}/../../../../sbin/fsck \
109		-DSETS_TAR_SUFF=${SETS_TAR_SUFF:Q} \
110		-DREL=\"${DISTRIBVER}\" -DMACH=\"${MACHINE}\" \
111		-DMACH_${MACHINE} -DARCH_${MACHINE_ARCH} \
112		${NODISKLABEL:D-DNO_DISKLABEL} \
113		${NOPARTMAN:D-DNO_PARTMAN}
114
115.if ${USE_XZ_SETS:Uno} != "no"
116CPPFLAGS+=	-DEXTRACT_NEEDS_BIG_RAM
117.endif
118
119.if ${RELEASEMACHINEDIR} != ${MACHINE}
120CPPFLAGS+=	-DARCH_SUBDIR="\"${RELEASEMACHINEDIR}\""
121CPPFLAGS+=	-DPKG_ARCH_SUBDIR="\"${MACHINE_ARCH}\""
122.endif
123
124.if defined(NETBSD_OFFICIAL_RELEASE) && ${NETBSD_OFFICIAL_RELEASE} == "yes"
125CPPFLAGS+= -DSYSINST_FTP_HOST=\"ftp.NetBSD.org\" -DNETBSD_OFFICIAL_RELEASE
126CPPFLAGS+= -DSYSINST_HTTP_HOST=\"cdn.NetBSD.org\" -DNETBSD_OFFICIAL_RELEASE
127CPPFLAGS+= -DREL_PATH=\"netbsd-${DISTRIBVER:C/\.[0-9][_A-Z]*[0-9]*$//:S/./-/}\"
128CPPFLAGS+= -DPKG_SUBDIR="\"${DISTRIBVER:C/_.*$//}\""
129.else
130CPPFLAGS+= -DSYSINST_FTP_HOST=\"nyftp.NetBSD.org\"
131CPPFLAGS+= -DSYSINST_HTTP_HOST=\"nycdn.NetBSD.org\"
132.if (${DISTRIBVER:M*.99.*})
133CPPFLAGS+= -DREL_PATH=\"HEAD\"
134CPPFLAGS+= -DPKG_SUBDIR="\"${DISTRIBVER:C/\.99\.[0-9]*[_A-Z]*$//}.0\""
135.elif (${DISTRIBVER:M*.[0-9].[0-9]*})
136CPPFLAGS+= -DREL_PATH=\"netbsd-${DISTRIBVER:C/\.[0-9][_A-Z]*[0-9]*$//:S/./-/}\"
137CPPFLAGS+= -DPKG_SUBDIR="\"${DISTRIBVER:C/_.*$//}\""
138.elif (${DISTRIBVER:M*.[0-9]*})
139CPPFLAGS+= -DREL_PATH=\"netbsd-${DISTRIBVER:C/\.[0-9][_A-Z]*[0-9]*$//}\"
140CPPFLAGS+= -DPKG_SUBDIR="\"${DISTRIBVER:C/_.*$//}\""
141.endif
142.endif
143CPPFLAGS+= -DNETBSD_MAJOR='"${DISTRIBVER:C/\..*//}"'
144
145.if !defined(DEBUG)
146CPPFLAGS+=	-DCATALOG_DIR=\"${CATALOGDIR}\"
147.endif
148
149.if (defined(DEBUG))
150.if ${ACTIVE_CC} == "gcc"
151# make gcc run additional passes for better debug info (only needed
152# when compiling with -O0)
153O0TRACKING=	-fvar-tracking-assignments -fvar-tracking
154.endif
155CPPFLAGS+=-DDEBUG
156DBG +=-g -O0 ${O0TRACKING}
157.else
158.if defined(SMALLPROG)
159COPTS += -Os
160.endif
161.endif
162
163.if (!defined(SMALLPROG) || defined(SMALLPROG_INET6)) && (${USE_INET6} != "no")
164CPPFLAGS+=-DINET6
165.endif
166
167COPTS+=	${CC_WNO_FORMAT_TRUNCATION}
168COPTS.disklabel.c+= ${CC_WNO_STRINGOP_TRUNCATION}
169
170# Host to ftp from.  Default:
171#	"ftp.NetBSD.org"
172#
173.if defined(SYSINST_FTP_HOST)
174CPPFLAGS+=	-DSYSINST_FTP_HOST=\"${SYSINST_FTP_HOST}\"
175.endif
176
177# Top-level ftp directory.  Default:
178#	"pub/NetBSD/NetBSD-" + VER + "/" + MACH
179#
180.if defined(SYSINST_FTP_DIR)
181CPPFLAGS+=	-DSYSINST_FTP_DIR=\"${SYSINST_FTP_DIR}\"
182.endif
183
184# Top-level CDROM directory.  Default:
185#	"/" + MACH
186#
187.if defined(SYSINST_CDROM_DIR)
188CPPFLAGS+=	-DSYSINST_CDROM_DIR=\"${SYSINST_CDROM_DIR}\"
189.endif
190
191
192DPSRCS+=	msg_defs.h menu_defs.h
193
194CLEANFILES=	menu_defs.c menu_defs.h menus.def \
195		msg_defs.c msg_defs.h msg.def msgtouch \
196		sysinstmsgs.*
197
198.PATH: ${.CURDIR}/../..
199
200menu_defs.h: menu_defs.c
201	[ -f ${.TARGET} ] || { \
202		${_MKSHTARGET_CREATE}; \
203		${TOOL_MENUC} menus.def; \
204	}
205menu_defs.c: menus.def
206	${_MKTARGET_CREATE}
207	[ ! -f menu_defs.h ] || mv -f menu_defs.h menu_defs.oh
208	${TOOL_MENUC} menus.def
209	! cmp -s menu_defs.oh menu_defs.h || mv -f menu_defs.oh menu_defs.h
210	@rm -f menu_defs.oh
211
212msg_defs.h: msg_defs.c
213	[ -f ${.TARGET} ] || { \
214		${_MKSHTARGET_CREATE}; \
215		${TOOL_MSGC} msg.def; \
216	}
217msg_defs.c: msg.def
218	${_MKTARGET_CREATE}
219	[ ! -f msg_defs.h ] || mv -f msg_defs.h msg_defs.oh
220	${TOOL_MSGC} msg.def
221	! cmp -s msg_defs.oh msg_defs.h || mv -f msg_defs.oh msg_defs.h
222	@rm -f msg_defs.oh
223
224# Needed to get proper dependency checks on osrelease
225msgtouch: ${DISTRIBVERDEP}
226	touch ${.TARGET}
227
228.if !defined(NOPARTMAN)
229MSG_MD+=	msg.pm.${SYSINSTLANG}
230.endif
231
232.if ${CHECK_ENTROPY:Uyes} != "no"
233MSG_MD+=	msg.entropy.${SYSINSTLANG}
234.endif
235
236msg.def: msg.mi.${SYSINSTLANG} ${MSG_MD} msgtouch
237	${_MKTARGET_CREATE}
238	${TOOL_SED} "s/@@VERSION@@/${DISTRIBVER}/" ${.ALLSRC} | \
239	${TOOL_SED} "s/@@MACHINE@@/${MACHINE}/" | \
240	${TOOL_AWK} -f ${UNIF_AWK} -v defines="${MD_OPTIONS}" > ${.TARGET}
241
242menus.def: ${MENUS_MI} ${MENUS_MD} msgtouch
243	${_MKTARGET_CREATE}
244	${TOOL_SED} "s/@@VERSION@@/${DISTRIBVER}/" ${.ALLSRC} | \
245	${TOOL_SED} "s/@@MACHINE@@/${MACHINE}/" | \
246	${TOOL_AWK} -f ${UNIF_AWK} -v defines="${MD_OPTIONS}" > ${.TARGET}
247
248sysinstmsgs.fmtcnt: msg.mi.${SYSINSTLANG} ${MSG_MD} msgtouch msg_defs.h
249	${_MKTARGET_CREATE}
250	${TOOL_SED} "s/@@VERSION@@/${DISTRIBVER}/" \
251		${.ALLSRC:M*.${SYSINSTLANG}} | \
252	${TOOL_SED} "s/@@MACHINE@@/${MACHINE}/" | \
253	${TOOL_AWK} -f ${UNIF_AWK} -v defines="${MD_OPTIONS}" | \
254	${HOST_SH} ${MSG_XLAT_SH} -c > ${.TARGET}
255
256.for LANG in ${LANGUAGES:N${SYSINSTLANG}}
257sysinstmsgs.${LANG}: msg.mi.${LANG} ${MSG_MD:S/.${SYSINSTLANG}$/.${LANG}/} msgtouch msg_defs.h sysinstmsgs.fmtcnt
258	${_MKTARGET_CREATE}
259	${TOOL_SED} "s/@@VERSION@@/${DISTRIBVER}/" ${.ALLSRC:M*.${LANG}} | \
260	${TOOL_SED} "s/@@MACHINE@@/${MACHINE}/" | \
261	${TOOL_AWK} -f ${UNIF_AWK} -v defines="${MD_OPTIONS}" | \
262	${HOST_SH} ${MSG_XLAT_SH} -f sysinstmsgs.fmtcnt > ${.TARGET}
263
264DPSRCS+=	sysinstmsgs.${LANG}
265FILES+=		sysinstmsgs.${LANG}
266FILESDIR_sysinstmsgs.${LANG}=	${CATALOGDIR}
267.endfor
268
269.PHONY:	check-lang
270check-lang:	msg.def msg_defs.h
271	${_MKTARGET_CREATE}
272	${TOOL_SED} "s/@@VERSION@@/${DISTRIBVER}/" msg.def | \
273	${TOOL_SED} "s/@@MACHINE@@/${MACHINE}/" | \
274	${TOOL_AWK} -f ${UNIF_AWK} -v defines="${MD_OPTIONS}" | \
275	${HOST_SH} ${MSG_XLAT_SH} -i > /tmp/sysinst.en
276	${HOST_SH} ${MSG_CMP_SH} msg_defs.h /tmp/sysinst.en sysinstmsgs.${LANG}
277	@rm /tmp/sysinst.en
278
279COPTS.util.c+=	${CC_WNO_STRINGOP_TRUNCATION}
280COPTS+=		-fcommon
281
282.include <bsd.prog.mk>
283