1#         $NetBSD: Makefile.tarfloppy,v 1.19 2017/02/11 03:07:06 christos Exp $
2#
3# Makefile snippet to create a set of ustar floppies.
4# Each floppy has an 8KB header, followed by part or all of the ustar archive.
5#
6# Required variables:
7#         NETBSDSRCDIR        Top level of src tree (set by <bsd.own.mk>)
8#         FLOPPYBASE          Basename of floppies. Floppy number ${n} will
9#                             be generated as ${FLOPPYBASE}${n}${FLOPPYSUFFIX}
10#         FLOPPYSIZE          Size of floppy in 512 byte blocks.
11#         FLOPPYFILES         Files to write to floppy.
12#                             Usually set to "boot ${FLOPPYMETAFILE} netbsd"
13#
14# Optional variables:
15#         FLOPPY_BOOT                   Bootstrap to use as "boot".
16#         FLOPPY_BOOT_STRIP   If yes, strip "boot" before use.
17#         FLOPPY_NETBSD                 Kernel to to use as "netbsd".
18#         FLOPPYINSTBOOT                Installboot program to use.
19#                                       USTAR image file is in @IMAGE@.
20#         FLOPPYMAX           Maximum number of floppies to build.
21#                                       If 1, the final image is installed as
22#                                       ${FLOPPYBASE}${FLOPPYSUFFIX} instead of
23#                                       ${FLOPPYBASE}1${FLOPPYSUFFIX}
24#         FLOPPYMETAFILE                USTAR metafile(s) (optional)
25#         FLOPPYPAD           If defined, pad the last floppy to ${FLOPPYSIZE}
26#         FLOPPYSUFFIX                  Suffix of created floppies.
27#         FLOPPY_RELEASEDIR   Where to install release floppies.
28#
29
30.if !defined(_MAKEFILE_TARFLOPPY_)
31_MAKEFILE_TARFLOPPY_=1
32
33
34.if defined(FLOPPY_BOOT)                                    # {
35CLEANFILES+=        boot
36boot: ${FLOPPY_BOOT}
37          ${_MKTARGET_CREATE} "(from: ${.ALLSRC})"
38          @rm -f boot
39          @cp ${.ALLSRC} boot
40.if defined(FLOPPY_BOOT_STRIP)
41          @${STRIP} boot
42.endif
43.endif    # FLOPPY_BOOT                                               # }
44
45.if defined(FLOPPY_BOOT_CFG)
46CLEANFILES+=        boot.cfg
47boot.cfg: ${FLOPPY_BOOT_CFG}
48          ${_MKTARGET_CREATE} "(from: ${.ALLSRC})"
49          @rm -f ${.TARGET}
50          @cp ${.ALLSRC} ${.TARGET}
51.endif    # FLOPPY_BOOT_CFG
52
53.if defined(FLOPPY_NETBSD)                                  # {
54CLEANFILES+=        netbsd netbsd.tmp
55.if ${FLOPPY_NETBSD:E}=="gz"
56COPY_CMD= gunzip -c ${.ALLSRC} > ${.TARGET}.tmp
57COMPRESS_CMD=       ${TOOL_GZIP_N} -9c ${.TARGET}.tmp > ${.TARGET}; \
58                    rm -f ${.TARGET}.tmp
59.else
60COPY_CMD= cp ${.ALLSRC} ${.TARGET}.tmp
61COMPRESS_CMD=       mv -f ${.TARGET}.tmp ${.TARGET}
62.endif
63netbsd: ${FLOPPY_NETBSD}
64          ${_MKTARGET_CREATE} "(from: ${.ALLSRC})"
65          ${COPY_CMD}
66          ${STRIP} -R .comment -R .ident ${.TARGET}.tmp
67          ${COMPRESS_CMD}
68.endif    # FLOPPY_NETBSD                                             # }
69
70
71.if defined(FLOPPYMETAFILE)                                 # {
72CLEANFILES+=        ${FLOPPYMETAFILE}
73${FLOPPYMETAFILE}:
74          ${_MKTARGET_CREATE}
75          @rm -f ${FLOPPYMETAFILE}
76          @touch ${FLOPPYMETAFILE}
77.endif    # FLOPPYMETAFILE                                  # }
78
79
80${FLOPPYBASE}1${FLOPPYSUFFIX}: ${FLOPPYFILES} ${DISTRIBDIR}/common/buildfloppies.sh
81          ${_MKTARGET_CREATE} "(from: ${FLOPPYFILES})"
82          PAX=${TOOL_PAX:Q} ${HOST_SH} ${DISTRIBDIR}/common/buildfloppies.sh \
83              ${FLOPPYINSTBOOT:D-i ${FLOPPYINSTBOOT}} ${FLOPPYPAD:D-p} \
84              ${FLOPPYMAX:D-m ${FLOPPYMAX}} ${FLOPPYSUFFIX:D-s ${FLOPPYSUFFIX}} \
85              ${MKREPRO_TIMESTAMP:D-t ${MKREPRO_TIMESTAMP}} -N ${DESTDIR}/etc \
86              ${FLOPPYBASE} ${FLOPPYSIZE} ${FLOPPYFILES}
87
88CLEANFILES+=        ${FLOPPYBASE}?${FLOPPYSUFFIX}
89
90
91realall: ${FLOPPYBASE}1${FLOPPYSUFFIX}
92
93.if defined(FLOPPY_RELEASEDIR)
94release:: check_RELEASEDIR .WAIT ${FLOPPYBASE}1${FLOPPYSUFFIX}
95          if [ -e ${FLOPPYBASE}2${FLOPPYSUFFIX} ]; then \
96                    ${RELEASE_INSTALL} ${FLOPPYBASE}?${FLOPPYSUFFIX} \
97                        ${RELEASEDIR}/${RELEASEMACHINEDIR}/${FLOPPY_RELEASEDIR}; \
98          else \
99                    ${RELEASE_INSTALL} ${FLOPPYBASE}1${FLOPPYSUFFIX} \
100                        ${RELEASEDIR}/${RELEASEMACHINEDIR}/${FLOPPY_RELEASEDIR}/${FLOPPYBASE}${FLOPPYSUFFIX}; \
101          fi
102.endif
103
104
105.endif    # _MAKEFILE_TARFLOPPY_
106