1#
2# Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
3# Use is subject to license terms.
4# Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
5# Copyright 2015, OmniTI Computer Consulting, Inc. All rights reserved.
6# Copyright 2016 Nexenta Systems, Inc.
7# Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
8#
9include ../../Makefile.grub
10include ../Makefile.solaris.defs
11
12.SUFFIXES:
13.SUFFIXES: .exec $(SUFFIXES)
14
15.exec:
16	$(OBJCOPY) -O binary $< $@
17
18
19INCLUDES	= -I. -I.. -I../stage1 -I../netboot
20LIBS		=
21
22FSYS_CFLAGS	= -DFSYS_UFS=1 -DFSYS_FAT=1 \
23		  -DFSYS_ZFS=1 -DFSYS_ISO9660=1 \
24		  -DUSE_MD5_PASSWORDS=1
25$(STAGE2_NETBOOT)TFTP_CFLAGS	= -DFSYS_TFTP=1
26$(OPTION_FS)FSYS_CFLAGS	+= -DFSYS_MINIX=1 -DFSYS_JFS=1 -DFSYS_XFS=1 \
27		  -DSYS_VSTAFS=1 -DFSYS_FFS=1 -DFSYS_REISERFS=1 \
28		  -DFSYS_EXT2FS=1 -DFSYS_UFS2=1
29GRAPHICS_CFLAGS	= -DSUPPORT_GRAPHICS=1
30# HERCULES_CFLAGS	= -DSUPPORT_HERCULES=1
31NETBOOT_CFLAGS	= -DSUPPORT_NETBOOT=1
32SERIAL_CFLAGS	= -DSUPPORT_SERIAL=1
33GRUB_CFLAGS	= -O2 -I../lib -DGRUB_UTIL=1 \
34		  -DFSYS_ISO9660=1 -DFSYS_ZFS=1 -DFSYS_FAT=1 \
35		  -DFSYS_UFS=1 \
36		  -DUSE_MD5_PASSWORDS=1 -DSUPPORT_SERIAL=1
37$(OPTION_FS)GRUB_CFLAGS	+= -DFSYS_MINIX=1 -DFSYS_JFS=1 -DFSYS_XFS=1 \
38		  -DSYS_VSTAFS=1 -DFSYS_FFS=1 -DFSYS_REISERFS=1 \
39		  -DFSYS_EXT2FS=1 -DFSYS_UFS2=1
40# GRUB_CFLAGS	+= -DSUPPORT_HERCULES=1
41STAGE1_5_CFLAGS	= $(STAGE2_CFLAGS) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1
42STAGE2_CFLAGS	= -Os -fno-builtin -nostdinc \
43		  $(SERIAL_CFLAGS) $(GRAPHICS_CFLAGS)
44$(STAGE2_NETBOOT)STAGE2_CFLAGS	+= $(NETBOOT_CFLAGS)
45#STAGE2_CFLAGS	+= $(HERCULES_CFLAGS)
46
47NBLOADER_LINK	= -nostdlib -N -Ttext 0 $(GLDTARGET)
48PRE_STAGE2_LINK	= -nostdlib -N -Ttext 8200 $(GLDTARGET)
49PXELOADER_LINK	= -nostdlib -N -Ttext 7C00 $(GLDTARGET)
50STAGE1_5_LINK	= -nostdlib -N -Ttext 2000 $(GLDTARGET)
51START_ELTORITO_LINK = -nostdlib -N -Ttext 7C00 $(GLDTARGET)
52START_LINK	= -nostdlib -N -Ttext 8000 $(GLDTARGET)
53
54LIBDRIVERS	= ../netboot/libdrivers.a
55
56
57BUILT_SOURCES	= stage2_size.h
58BUILT_SOURCES	+= diskless_size.h
59
60
61LIBRARIES	= $(LIBGRUB)
62
63LIBGRUB		= libgrub.a
64LIBGRUB_OBJS	= libgrub_a-boot.o		\
65		  libgrub_a-builtins.o		\
66		  libgrub_a-char_io.o		\
67		  libgrub_a-cmdline.o		\
68		  libgrub_a-common.o		\
69		  libgrub_a-disk_io.o		\
70		  libgrub_a-expand.o		\
71		  libgrub_a-fsys_ext2fs.o	\
72		  libgrub_a-fsys_fat.o		\
73		  libgrub_a-fsys_ffs.o		\
74		  libgrub_a-fsys_iso9660.o	\
75		  libgrub_a-fsys_jfs.o		\
76		  libgrub_a-fsys_minix.o	\
77		  libgrub_a-fsys_reiserfs.o	\
78		  libgrub_a-zfs_sha256.o	\
79		  libgrub_a-zfs_lzjb.o		\
80		  libgrub_a-zfs_lz4.o		\
81		  libgrub_a-zfs_fletcher.o	\
82		  libgrub_a-fsys_zfs.o		\
83		  libgrub_a-fsys_ufs.o		\
84		  libgrub_a-fsys_ufs2.o		\
85		  libgrub_a-fsys_vstafs.o	\
86		  libgrub_a-fsys_xfs.o		\
87		  libgrub_a-graphics.o		\
88		  libgrub_a-gunzip.o		\
89		  libgrub_a-md5.o		\
90		  libgrub_a-moddiv.o		\
91		  libgrub_a-serial.o		\
92		  libgrub_a-stage2.o		\
93		  libgrub_a-terminfo.o		\
94		  libgrub_a-tparm.o
95$(LIBGRUB_OBJS)	:= CFLAGS = $(BASE_CFLAGS) $(GRUB_CFLAGS)
96
97
98# Will be installed in $(ROOT_BOOT_GRUB).
99INSTALL_DATA	= $(E2FS_STAGE1_5_DATA)		\
100		  $(FAT_STAGE1_5_DATA)		\
101		  $(FFS_STAGE1_5_DATA)		\
102		  $(ISO9660_STAGE1_5_DATA)	\
103		  $(JFS_STAGE1_5_DATA)		\
104		  $(MINIX_STAGE1_5_DATA)	\
105		  $(NBGRUB_DATA)		\
106		  $(PXEGRUB_DATA)		\
107		  $(REISERFS_STAGE1_5_DATA)	\
108		  $(STAGE2_DATA)		\
109		  $(STAGE2_ELTORITO_DATA)	\
110		  $(UFS2_STAGE1_5_DATA)		\
111		  $(UFS_STAGE1_5_DATA)		\
112		  $(ZFS_STAGE1_5_DATA)		\
113		  $(VSTAFS_STAGE1_5_DATA)	\
114		  $(XFS_STAGE1_5_DATA)
115
116# Won't be installed.
117NOINSTALL_DATA	= $(DISKLESS_DATA)		\
118		  $(NBLOADER_DATA)		\
119		  $(PRE_STAGE2_DATA)		\
120		  $(PXELOADER_DATA)		\
121		  $(START_DATA)			\
122		  $(START_ELTORITO_DATA)
123
124DATA		= $(INSTALL_DATA) $(NOINSTALL_DATA)
125
126
127PROGRAMS	= $(DISKLESS_EXEC)		\
128		  $(E2FS_STAGE1_5_EXEC)		\
129		  $(FAT_STAGE1_5_EXEC)		\
130		  $(FFS_STAGE1_5_EXEC)		\
131		  $(ISO9660_STAGE1_5_EXEC)	\
132		  $(JFS_STAGE1_5_EXEC)		\
133		  $(MINIX_STAGE1_5_EXEC)	\
134		  $(NBLOADER_EXEC)		\
135		  $(PRE_STAGE2_EXEC)		\
136		  $(PXELOADER_EXEC)		\
137		  $(REISERFS_STAGE1_5_EXEC)	\
138		  $(START_EXEC)			\
139		  $(START_ELTORITO_EXEC)	\
140		  $(UFS2_STAGE1_5_EXEC)		\
141		  $(UFS_STAGE1_5_EXEC)		\
142		  $(ZFS_STAGE1_5_EXEC)		\
143		  $(VSTAFS_STAGE1_5_EXEC)	\
144		  $(XFS_STAGE1_5_EXEC)
145
146
147#
148# diskless
149#
150DISKLESS_DATA		= diskless
151DISKLESS_EXEC		= diskless.exec
152DISKLESS_ASMOBJS	= diskless_exec-asm.o
153
154DISKLESS_OBJS		= diskless_exec-bios.o		\
155			  diskless_exec-boot.o		\
156			  diskless_exec-builtins.o	\
157			  diskless_exec-char_io.o	\
158			  diskless_exec-cmdline.o	\
159			  diskless_exec-common.o	\
160			  diskless_exec-console.o	\
161			  diskless_exec-disk_io.o	\
162			  diskless_exec-expand.o	\
163			  diskless_exec-fsys_ext2fs.o	\
164			  diskless_exec-fsys_fat.o	\
165			  diskless_exec-fsys_ffs.o	\
166			  diskless_exec-fsys_iso9660.o	\
167			  diskless_exec-fsys_jfs.o	\
168			  diskless_exec-fsys_minix.o	\
169			  diskless_exec-fsys_reiserfs.o	\
170			  diskless_exec-zfs_sha256.o	\
171			  diskless_exec-zfs_lzjb.o	\
172			  diskless_exec-zfs_lz4.o	\
173			  diskless_exec-zfs_fletcher.o	\
174			  diskless_exec-fsys_zfs.o	\
175			  diskless_exec-fsys_ufs.o	\
176			  diskless_exec-fsys_ufs2.o	\
177			  diskless_exec-fsys_vstafs.o	\
178			  diskless_exec-fsys_xfs.o	\
179			  diskless_exec-graphics.o	\
180			  diskless_exec-gunzip.o	\
181			  diskless_exec-hercules.o	\
182			  diskless_exec-md5.o		\
183			  diskless_exec-moddiv.o	\
184			  diskless_exec-serial.o	\
185			  diskless_exec-smp-imps.o	\
186			  diskless_exec-stage2.o	\
187			  diskless_exec-terminfo.o	\
188			  diskless_exec-tparm.o
189
190$(DISKLESS_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(PRE_STAGE2_LINK)
191$(DISKLESS_EXEC)	:= LIBS = $(LIBDRIVERS)
192
193$(DISKLESS_ASMOBJS)	:= CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE2_CFLAGS) \
194				$(FSYS_CFLAGS) -DFSYS_TFTP=1 \
195				-DSUPPORT_DISKLESS=1
196
197$(DISKLESS_OBJS)	:= CFLAGS = $(BASE_CFLAGS) $(STAGE2_CFLAGS) \
198				$(FSYS_CFLAGS) -DFSYS_TFTP=1 \
199				-DSUPPORT_DISKLESS=1
200
201#
202# ext2fs stage 1.5
203#
204E2FS_STAGE1_5_DATA	= e2fs_stage1_5
205E2FS_STAGE1_5_EXEC	= e2fs_stage1_5.exec
206
207E2FS_STAGE1_5_ASMOBJS	= e2fs_stage1_5_exec-start.o \
208			  e2fs_stage1_5_exec-asm.o
209
210E2FS_STAGE1_5_OBJS	= e2fs_stage1_5_exec-bios.o \
211			  e2fs_stage1_5_exec-char_io.o \
212			  e2fs_stage1_5_exec-common.o \
213			  e2fs_stage1_5_exec-disk_io.o \
214			  e2fs_stage1_5_exec-fsys_ext2fs.o \
215			  e2fs_stage1_5_exec-moddiv.o \
216			  e2fs_stage1_5_exec-stage1_5.o
217
218$(E2FS_STAGE1_5_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(STAGE1_5_LINK)
219
220$(E2FS_STAGE1_5_ASMOBJS) := CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE1_5_CFLAGS) \
221				-DFSYS_EXT2FS=1 -DNO_BLOCK_FILES=1
222
223$(E2FS_STAGE1_5_OBJS)	:= CFLAGS = $(BASE_CFLAGS) $(STAGE1_5_CFLAGS) \
224				-DFSYS_EXT2FS=1 -DNO_BLOCK_FILES=1
225
226#
227# FAT stage 1.5
228#
229FAT_STAGE1_5_DATA	= fat_stage1_5
230FAT_STAGE1_5_EXEC	= fat_stage1_5.exec
231
232FAT_STAGE1_5_ASMOBJS	= fat_stage1_5_exec-start.o \
233			  fat_stage1_5_exec-asm.o
234
235FAT_STAGE1_5_OBJS	= fat_stage1_5_exec-bios.o \
236			  fat_stage1_5_exec-char_io.o \
237			  fat_stage1_5_exec-common.o \
238			  fat_stage1_5_exec-disk_io.o \
239			  fat_stage1_5_exec-fsys_fat.o \
240			  fat_stage1_5_exec-moddiv.o \
241			  fat_stage1_5_exec-stage1_5.o
242
243$(FAT_STAGE1_5_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(STAGE1_5_LINK)
244
245$(FAT_STAGE1_5_ASMOBJS) := CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE1_5_CFLAGS) \
246				-DFSYS_FAT=1 -DNO_BLOCK_FILES=1
247
248$(FAT_STAGE1_5_OBJS)	:= CFLAGS = $(BASE_CFLAGS) $(STAGE1_5_CFLAGS) \
249				-DFSYS_FAT=1 -DNO_BLOCK_FILES=1
250
251#
252# FFS stage 1.5
253#
254FFS_STAGE1_5_DATA	= ffs_stage1_5
255FFS_STAGE1_5_EXEC	= ffs_stage1_5.exec
256
257FFS_STAGE1_5_ASMOBJS	= ffs_stage1_5_exec-start.o \
258			  ffs_stage1_5_exec-asm.o
259
260FFS_STAGE1_5_OBJS	= ffs_stage1_5_exec-bios.o \
261			  ffs_stage1_5_exec-char_io.o \
262			  ffs_stage1_5_exec-common.o \
263			  ffs_stage1_5_exec-disk_io.o \
264			  ffs_stage1_5_exec-fsys_ffs.o \
265			  ffs_stage1_5_exec-moddiv.o \
266			  ffs_stage1_5_exec-stage1_5.o
267
268$(FFS_STAGE1_5_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(STAGE1_5_LINK)
269
270$(FFS_STAGE1_5_ASMOBJS) := CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE1_5_CFLAGS) \
271				-DFSYS_FFS=1 -DNO_BLOCK_FILES=1
272
273$(FFS_STAGE1_5_OBJS)	:= CFLAGS = $(BASE_CFLAGS) $(STAGE1_5_CFLAGS) \
274				-DFSYS_FFS=1 -DNO_BLOCK_FILES=1
275
276#
277# ISO9660 stage 1.5
278#
279ISO9660_STAGE1_5_DATA	= iso9660_stage1_5
280ISO9660_STAGE1_5_EXEC	= iso9660_stage1_5.exec
281
282ISO9660_STAGE1_5_ASMOBJS = iso9660_stage1_5_exec-start_eltorito.o \
283			   iso9660_stage1_5_exec-asm.o
284
285ISO9660_STAGE1_5_OBJS	= iso9660_stage1_5_exec-bios.o \
286			  iso9660_stage1_5_exec-char_io.o \
287			  iso9660_stage1_5_exec-common.o \
288			  iso9660_stage1_5_exec-disk_io.o \
289			  iso9660_stage1_5_exec-fsys_iso9660.o \
290			  iso9660_stage1_5_exec-moddiv.o \
291			  iso9660_stage1_5_exec-stage1_5.o
292
293$(ISO9660_STAGE1_5_EXEC) := LDFLAGS = $(BASE_LDFLAGS) $(STAGE1_5_LINK)
294
295$(ISO9660_STAGE1_5_ASMOBJS) := CCASFLAGS = $(BASE_CCASFLAGS) \
296				$(STAGE1_5_CFLAGS) \
297				-DFSYS_ISO9660=1 -DNO_BLOCK_FILES=1
298
299$(ISO9660_STAGE1_5_OBJS) := CFLAGS = $(BASE_CFLAGS) $(STAGE1_5_CFLAGS) \
300				-DFSYS_ISO9660=1 -DNO_BLOCK_FILES=1
301
302#
303# IBM JFS stage 1.5
304#
305JFS_STAGE1_5_DATA	= jfs_stage1_5
306JFS_STAGE1_5_EXEC	= jfs_stage1_5.exec
307
308JFS_STAGE1_5_ASMOBJS	= jfs_stage1_5_exec-start.o \
309			  jfs_stage1_5_exec-asm.o
310
311JFS_STAGE1_5_OBJS	= jfs_stage1_5_exec-bios.o \
312			  jfs_stage1_5_exec-char_io.o \
313			  jfs_stage1_5_exec-common.o \
314			  jfs_stage1_5_exec-disk_io.o \
315			  jfs_stage1_5_exec-fsys_jfs.o \
316			  jfs_stage1_5_exec-moddiv.o \
317			  jfs_stage1_5_exec-stage1_5.o
318
319$(JFS_STAGE1_5_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(STAGE1_5_LINK)
320
321$(JFS_STAGE1_5_ASMOBJS)	:= CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE1_5_CFLAGS) \
322				-DFSYS_JFS=1 -DNO_BLOCK_FILES=1
323
324$(JFS_STAGE1_5_OBJS)	:= CFLAGS = $(BASE_CFLAGS) $(STAGE1_5_CFLAGS) \
325				-DFSYS_JFS=1 -DNO_BLOCK_FILES=1
326
327#
328# Minix fs stage 1.5
329#
330MINIX_STAGE1_5_DATA	= minix_stage1_5
331MINIX_STAGE1_5_EXEC	= minix_stage1_5.exec
332
333MINIX_STAGE1_5_ASMOBJS	= minix_stage1_5_exec-start.o \
334			  minix_stage1_5_exec-asm.o
335
336MINIX_STAGE1_5_OBJS	= minix_stage1_5_exec-bios.o \
337			  minix_stage1_5_exec-char_io.o \
338			  minix_stage1_5_exec-common.o \
339			  minix_stage1_5_exec-disk_io.o \
340			  minix_stage1_5_exec-fsys_minix.o \
341			  minix_stage1_5_exec-moddiv.o \
342			  minix_stage1_5_exec-stage1_5.o
343
344$(MINIX_STAGE1_5_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(STAGE1_5_LINK)
345
346$(MINIX_STAGE1_5_ASMOBJS) := CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE1_5_CFLAGS) \
347				-DFSYS_MINIX=1 -DNO_BLOCK_FILES=1
348
349$(MINIX_STAGE1_5_OBJS)	:= CFLAGS = $(BASE_CFLAGS) $(STAGE1_5_CFLAGS) \
350				-DFSYS_MINIX=1 -DNO_BLOCK_FILES=1
351
352#
353# nbgrub
354#
355NBGRUB_DATA		= nbgrub
356
357#
358# nbloader
359#
360NBLOADER_DATA		= nbloader
361NBLOADER_EXEC		= nbloader.exec
362NBLOADER_ASMOBJS	= nbloader_exec-nbloader.o
363NBLOADER_OBJS		=
364$(NBLOADER_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(NBLOADER_LINK)
365$(NBLOADER_ASMOBJS)	:= CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE2_CFLAGS)
366
367#
368# Pre-stage2
369#
370PRE_STAGE2_DATA		= pre_stage2
371PRE_STAGE2_EXEC		= pre_stage2.exec
372PRE_STAGE2_ASMOBJS	= pre_stage2_exec-asm.o
373
374PRE_STAGE2_OBJS		= pre_stage2_exec-bios.o \
375			  pre_stage2_exec-boot.o \
376			  pre_stage2_exec-builtins.o \
377			  pre_stage2_exec-char_io.o \
378			  pre_stage2_exec-cmdline.o \
379			  pre_stage2_exec-common.o \
380			  pre_stage2_exec-console.o \
381			  pre_stage2_exec-disk_io.o \
382			  pre_stage2_exec-expand.o \
383			  pre_stage2_exec-fsys_ext2fs.o \
384			  pre_stage2_exec-fsys_fat.o \
385			  pre_stage2_exec-fsys_ffs.o \
386			  pre_stage2_exec-fsys_iso9660.o \
387			  pre_stage2_exec-fsys_jfs.o \
388			  pre_stage2_exec-fsys_minix.o \
389			  pre_stage2_exec-fsys_reiserfs.o \
390			  pre_stage2_exec-zfs_sha256.o \
391			  pre_stage2_exec-zfs_lzjb.o \
392			  pre_stage2_exec-zfs_lz4.o \
393			  pre_stage2_exec-zfs_fletcher.o \
394			  pre_stage2_exec-fsys_zfs.o \
395			  pre_stage2_exec-fsys_ufs.o \
396			  pre_stage2_exec-fsys_ufs2.o \
397			  pre_stage2_exec-fsys_vstafs.o \
398			  pre_stage2_exec-fsys_xfs.o \
399			  pre_stage2_exec-graphics.o \
400			  pre_stage2_exec-gunzip.o \
401			  pre_stage2_exec-hercules.o \
402			  pre_stage2_exec-md5.o \
403			  pre_stage2_exec-moddiv.o \
404			  pre_stage2_exec-serial.o \
405			  pre_stage2_exec-smp-imps.o \
406			  pre_stage2_exec-stage2.o \
407			  pre_stage2_exec-terminfo.o \
408			  pre_stage2_exec-tparm.o
409
410$(PRE_STAGE2_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(PRE_STAGE2_LINK)
411$(STAGE2_NETBOOT)$(PRE_STAGE2_EXEC)	:= LIBS = $(LIBDRIVERS)
412
413$(PRE_STAGE2_ASMOBJS)	:= CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE2_CFLAGS) \
414				$(FSYS_CFLAGS) $(TFTP_CFLAGS)
415
416$(PRE_STAGE2_OBJS)	:= CFLAGS = $(BASE_CFLAGS) $(STAGE2_CFLAGS) \
417				$(FSYS_CFLAGS) $(TFTP_CFLAGS)
418
419#
420# pxegrub
421#
422PXEGRUB_DATA		= pxegrub
423
424#
425# pxeloader
426#
427PXELOADER_DATA		= pxeloader
428PXELOADER_EXEC		= pxeloader.exec
429PXELOADER_ASMOBJS	= pxeloader_exec-pxeloader.o
430PXELOADER_OBJS		=
431$(PXELOADER_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(PXELOADER_LINK)
432$(PXELOADER_ASMOBJS)	:= CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE2_CFLAGS)
433
434#
435# ReiserFS stage 1.5
436#
437REISERFS_STAGE1_5_DATA  = reiserfs_stage1_5
438REISERFS_STAGE1_5_EXEC  = reiserfs_stage1_5.exec
439
440REISERFS_STAGE1_5_ASMOBJS = reiserfs_stage1_5_exec-start.o \
441			    reiserfs_stage1_5_exec-asm.o
442
443REISERFS_STAGE1_5_OBJS  = reiserfs_stage1_5_exec-bios.o \
444			  reiserfs_stage1_5_exec-char_io.o \
445			  reiserfs_stage1_5_exec-common.o \
446			  reiserfs_stage1_5_exec-disk_io.o \
447			  reiserfs_stage1_5_exec-fsys_reiserfs.o \
448			  reiserfs_stage1_5_exec-moddiv.o \
449			  reiserfs_stage1_5_exec-stage1_5.o
450
451$(REISERFS_STAGE1_5_EXEC) := LDFLAGS = $(BASE_LDFLAGS) $(STAGE1_5_LINK)
452
453$(REISERFS_STAGE1_5_ASMOBJS) := CCASFLAGS = $(BASE_CCASFLAGS) \
454				$(STAGE1_5_CFLAGS) \
455				-DFSYS_REISERFS=1 -DNO_BLOCK_FILES=1
456
457$(REISERFS_STAGE1_5_OBJS) := CFLAGS = $(BASE_CFLAGS) $(STAGE1_5_CFLAGS)	\
458				-DFSYS_REISERFS=1 -DNO_BLOCK_FILES=1
459
460#
461# stage2
462#
463STAGE2_DATA		= stage2
464
465#
466# Eltorito stage2
467#
468STAGE2_ELTORITO_DATA	= stage2_eltorito
469
470#
471# start
472#
473START_DATA		= start
474START_EXEC		= start.exec
475START_ASMOBJS		= start_exec-start.o
476START_OBJS		=
477$(START_EXEC)		:= LDFLAGS = $(BASE_LDFLAGS) $(START_LINK)
478$(START_ASMOBJS)	:= CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE2_CFLAGS)
479
480#
481# Eltorito start
482#
483START_ELTORITO_DATA	= start_eltorito
484START_ELTORITO_EXEC	= start_eltorito.exec
485START_ELTORITO_ASMOBJS	= start_eltorito_exec-start_eltorito.o
486START_ELTORITO_OBJS	=
487$(START_ELTORITO_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(START_ELTORITO_LINK)
488$(START_ELTORITO_ASMOBJS) := CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE2_CFLAGS)
489
490#
491# UFS2 stage 1.5
492#
493UFS2_STAGE1_5_DATA	= ufs2_stage1_5
494UFS2_STAGE1_5_EXEC	= ufs2_stage1_5.exec
495
496UFS2_STAGE1_5_ASMOBJS	= ufs2_stage1_5_exec-start.o \
497			  ufs2_stage1_5_exec-asm.o
498
499UFS2_STAGE1_5_OBJS	= ufs2_stage1_5_exec-bios.o \
500			  ufs2_stage1_5_exec-char_io.o \
501			  ufs2_stage1_5_exec-common.o \
502			  ufs2_stage1_5_exec-disk_io.o \
503			  ufs2_stage1_5_exec-fsys_ufs2.o \
504			  ufs2_stage1_5_exec-moddiv.o \
505			  ufs2_stage1_5_exec-stage1_5.o
506
507$(UFS2_STAGE1_5_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(STAGE1_5_LINK)
508
509$(UFS2_STAGE1_5_ASMOBJS) := CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE1_5_CFLAGS) \
510				-DFSYS_UFS2=1 -DNO_BLOCK_FILES=1
511
512$(UFS2_STAGE1_5_OBJS)	:= CFLAGS = $(BASE_CFLAGS) $(STAGE1_5_CFLAGS) \
513				-DFSYS_UFS2=1 -DNO_BLOCK_FILES=1
514
515#
516# UFS stage 1.5
517#
518UFS_STAGE1_5_DATA	= ufs_stage1_5
519UFS_STAGE1_5_EXEC	= ufs_stage1_5.exec
520
521UFS_STAGE1_5_ASMOBJS	= ufs_stage1_5_exec-start.o \
522			  ufs_stage1_5_exec-asm.o
523
524UFS_STAGE1_5_OBJS	= ufs_stage1_5_exec-bios.o \
525			  ufs_stage1_5_exec-char_io.o \
526			  ufs_stage1_5_exec-common.o \
527			  ufs_stage1_5_exec-disk_io.o \
528			  ufs_stage1_5_exec-fsys_ufs.o \
529			  ufs_stage1_5_exec-moddiv.o \
530			  ufs_stage1_5_exec-stage1_5.o
531
532$(UFS_STAGE1_5_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(STAGE1_5_LINK)
533
534$(UFS_STAGE1_5_ASMOBJS)	:= CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE1_5_CFLAGS) \
535				-DFSYS_UFS=1 -DNO_BLOCK_FILES=1
536
537$(UFS_STAGE1_5_OBJS)	:= CFLAGS = $(BASE_CFLAGS) $(STAGE1_5_CFLAGS) \
538				-DFSYS_UFS=1 -DNO_BLOCK_FILES=1
539
540#
541# ZFS stage 1.5
542#
543ZFS_STAGE1_5_DATA	= zfs_stage1_5
544ZFS_STAGE1_5_EXEC	= zfs_stage1_5.exec
545
546ZFS_STAGE1_5_ASMOBJS	= zfs_stage1_5_exec-start.o \
547			  zfs_stage1_5_exec-asm.o
548
549ZFS_STAGE1_5_OBJS	= zfs_stage1_5_exec-bios.o \
550			  zfs_stage1_5_exec-char_io.o \
551			  zfs_stage1_5_exec-common.o \
552			  zfs_stage1_5_exec-disk_io.o \
553			  zfs_stage1_5_exec-zfs_sha256.o \
554			  zfs_stage1_5_exec-zfs_lzjb.o \
555			  zfs_stage1_5_exec-zfs_lz4.o \
556			  zfs_stage1_5_exec-zfs_fletcher.o \
557			  zfs_stage1_5_exec-fsys_zfs.o \
558			  zfs_stage1_5_exec-moddiv.o \
559			  zfs_stage1_5_exec-stage1_5.o
560
561$(ZFS_STAGE1_5_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(STAGE1_5_LINK)
562
563$(ZFS_STAGE1_5_ASMOBJS)	:= CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE1_5_CFLAGS) \
564				-DFSYS_ZFS=1 -DNO_BLOCK_FILES=1
565
566$(ZFS_STAGE1_5_OBJS)	:= CFLAGS = $(BASE_CFLAGS) $(STAGE1_5_CFLAGS) \
567				-DFSYS_ZFS=1 -DNO_BLOCK_FILES=1
568
569#
570# VSTa FS
571#
572VSTAFS_STAGE1_5_DATA	= vstafs_stage1_5
573VSTAFS_STAGE1_5_EXEC	= vstafs_stage1_5.exec
574
575VSTAFS_STAGE1_5_ASMOBJS	= vstafs_stage1_5_exec-start.o \
576			  vstafs_stage1_5_exec-asm.o
577
578VSTAFS_STAGE1_5_OBJS	= vstafs_stage1_5_exec-bios.o \
579			  vstafs_stage1_5_exec-char_io.o \
580			  vstafs_stage1_5_exec-common.o \
581			  vstafs_stage1_5_exec-disk_io.o \
582			  vstafs_stage1_5_exec-fsys_vstafs.o \
583			  vstafs_stage1_5_exec-moddiv.o \
584			  vstafs_stage1_5_exec-stage1_5.o
585
586$(VSTAFS_STAGE1_5_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(STAGE1_5_LINK)
587
588$(VSTAFS_STAGE1_5_ASMOBJS) := CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE1_5_CFLAGS) \
589				-DFSYS_VSTAFS=1 -DNO_BLOCK_FILES=1
590
591$(VSTAFS_STAGE1_5_OBJS)	:= CFLAGS = $(BASE_CFLAGS) $(STAGE1_5_CFLAGS) \
592				-DFSYS_VSTAFS=1 -DNO_BLOCK_FILES=1
593
594#
595# SGI XFS stage 1.5
596#
597XFS_STAGE1_5_DATA	= xfs_stage1_5
598XFS_STAGE1_5_EXEC	= xfs_stage1_5.exec
599
600XFS_STAGE1_5_ASMOBJS	= xfs_stage1_5_exec-start.o \
601			  xfs_stage1_5_exec-asm.o
602
603XFS_STAGE1_5_OBJS	= xfs_stage1_5_exec-bios.o \
604			  xfs_stage1_5_exec-char_io.o \
605			  xfs_stage1_5_exec-common.o \
606			  xfs_stage1_5_exec-disk_io.o \
607			  xfs_stage1_5_exec-fsys_xfs.o \
608			  xfs_stage1_5_exec-moddiv.o \
609			  xfs_stage1_5_exec-stage1_5.o
610
611$(XFS_STAGE1_5_EXEC)	:= LDFLAGS = $(BASE_LDFLAGS) $(STAGE1_5_LINK)
612
613$(XFS_STAGE1_5_ASMOBJS)	:= CCASFLAGS = $(BASE_CCASFLAGS) $(STAGE1_5_CFLAGS) \
614				-DFSYS_XFS=1 -DNO_BLOCK_FILES=1
615
616$(XFS_STAGE1_5_OBJS)	:= CFLAGS = $(BASE_CFLAGS) $(STAGE1_5_CFLAGS) \
617				-DFSYS_XFS=1 -DNO_BLOCK_FILES=1
618
619
620INSTALL_TARGETS	= $(INSTALL_DATA:%=$(ROOT_BOOT_GRUB)/%) \
621		$(SRC_ZFSINC_DIR)
622
623#
624# Source files to be installed in $(ROOT_SRC).
625#
626SRC_DIR		= $(ROOT_SRC)/stage2
627SRC_ZFSINC_DIR	= $(SRC_DIR)/zfs-include
628SRC_FILES	= Makefile.am Makefile.in apic.h apm.S asm.S bios.c boot.c \
629		  builtins.c char_io.c cmdline.c common.c console.c defs.h \
630		  dir.h disk_inode.h disk_inode_ffs.h disk_io.c expand.c \
631		  expand.h fat.h \
632		  filesys.h freebsd.h fs.h fsys_ext2fs.c fsys_fat.c \
633		  fsys_ffs.c fsys_iso9660.c fsys_jfs.c fsys_minix.c \
634		  zfs_sha256.c zfs_lzjb.c zfs_lz4.c zfs_fletcher.c fsys_zfs.c \
635		  fsys_reiserfs.c fsys_ufs.c fsys_ufs2.c fsys_vstafs.c \
636		  fsys_xfs.c graphics.c graphics.h gunzip.c hercules.c \
637		  hercules.h i386-elf.h imgact_aout.h iso9660.h jfs.h \
638		  mb_header.h mb_info.h md5.c md5.h moddiv.c nbi.h nbloader.S \
639		  pc_slice.h pxeloader.S serial.c serial.h setjmp.S shared.h \
640		  size_test smp-imps.c smp-imps.h stage1_5.c stage2.c \
641		  start.S start_eltorito.S term.h terminfo.c terminfo.h \
642		  tparm.c tparm.h fsys_zfs.h ufs.h ufs2.h vstafs.h xfs.h
643SRC_ZFSINC_FILES = dmu.h dmu_objset.h dnode.h dsl_dataset.h dsl_dir.h spa.h \
644		uberblock_impl.h vdev_impl.h zap_impl.h zap_leaf.h zfs.h \
645		zfs_acl.h zfs_znode.h zil.h zio.h zio_checksum.h
646
647INSTALL_TARGETS	+= $(SRC_FILES:%=$(SRC_DIR)/%) \
648		$(SRC_ZFSINC_FILES:%=$(SRC_ZFSINC_DIR)/%)
649
650
651###############################################################################
652all: $(BUILT_SOURCES) .WAIT $(LIBRARIES) $(PROGRAMS) $(DATA)
653
654#
655# BUILT_SOURCES
656#
657stage2_size.h: $(PRE_STAGE2_DATA)
658	$(RM) $@
659	set dummy `ls -l $(PRE_STAGE2_DATA)`; \
660	echo "#define STAGE2_SIZE $$6" > $@
661
662diskless_size.h: $(DISKLESS_DATA)
663	$(RM) $@
664	set dummy `ls -l $(DISKLESS_DATA)`; \
665	echo "#define DISKLESS_SIZE $$6" > $@
666
667#
668# LIBRARIES
669#
670$(LIBGRUB): $(LIBGRUB_OBJS)
671	$(RM) $@
672	$(AR) cru $@ $(LIBGRUB_OBJS)
673	$(RANLIB) $@
674
675$(LIBGRUB_OBJS): $$(@:libgrub_a-%.o=%.c)
676	$(CC) $(CFLAGS) -c -o $@ $(@:libgrub_a-%.o=%.c)
677
678
679#
680# Diskless
681#
682$(DISKLESS_EXEC): $(DISKLESS_ASMOBJS) $(DISKLESS_OBJS)
683	$(RM) $@
684	$(LINK) -o $@ $(DISKLESS_ASMOBJS) $(DISKLESS_OBJS) $(LIBS)
685
686$(DISKLESS_ASMOBJS): $$(@:diskless_exec-%.o=%.S)
687	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:diskless_exec-%.o=%.S)
688
689$(DISKLESS_OBJS): $$(@:diskless_exec-%.o=%.c)
690	$(CC) $(CFLAGS) -c -o $@ $(@:diskless_exec-%.o=%.c)
691
692#
693# ext2fs stage 1.5
694#
695$(E2FS_STAGE1_5_EXEC): $(E2FS_STAGE1_5_ASMOBJS) $(E2FS_STAGE1_5_OBJS)
696	$(RM) $@
697	$(LINK) -o $@ $(E2FS_STAGE1_5_ASMOBJS) $(E2FS_STAGE1_5_OBJS) $(LIBS)
698
699$(E2FS_STAGE1_5_ASMOBJS): $$(@:e2fs_stage1_5_exec-%.o=%.S)
700	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:e2fs_stage1_5_exec-%.o=%.S)
701
702$(E2FS_STAGE1_5_OBJS): $$(@:e2fs_stage1_5_exec-%.o=%.c)
703	$(CC) $(CFLAGS) -c -o $@ $(@:e2fs_stage1_5_exec-%.o=%.c)
704
705#
706# FAT stage 1.5
707#
708$(FAT_STAGE1_5_EXEC): $(FAT_STAGE1_5_ASMOBJS) $(FAT_STAGE1_5_OBJS)
709	$(RM) $@
710	$(LINK) -o $@ $(FAT_STAGE1_5_ASMOBJS) $(FAT_STAGE1_5_OBJS) $(LIBS)
711
712$(FAT_STAGE1_5_ASMOBJS): $$(@:fat_stage1_5_exec-%.o=%.S)
713	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:fat_stage1_5_exec-%.o=%.S)
714
715$(FAT_STAGE1_5_OBJS): $$(@:fat_stage1_5_exec-%.o=%.c)
716	$(CC) $(CFLAGS) -c -o $@ $(@:fat_stage1_5_exec-%.o=%.c)
717
718#
719# FFS stage 1.5
720#
721$(FFS_STAGE1_5_EXEC): $(FFS_STAGE1_5_ASMOBJS) $(FFS_STAGE1_5_OBJS)
722	$(RM) $@
723	$(LINK) -o $@ $(FFS_STAGE1_5_ASMOBJS) $(FFS_STAGE1_5_OBJS) $(LIBS)
724
725$(FFS_STAGE1_5_ASMOBJS): $$(@:ffs_stage1_5_exec-%.o=%.S)
726	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:ffs_stage1_5_exec-%.o=%.S)
727
728$(FFS_STAGE1_5_OBJS): $$(@:ffs_stage1_5_exec-%.o=%.c)
729	$(CC) $(CFLAGS) -c -o $@ $(@:ffs_stage1_5_exec-%.o=%.c)
730
731#
732# ISO9660 stage 1.5
733#
734$(ISO9660_STAGE1_5_EXEC): $(ISO9660_STAGE1_5_ASMOBJS) $(ISO9660_STAGE1_5_OBJS)
735	$(RM) $@
736	$(LINK) -o $@ $(ISO9660_STAGE1_5_ASMOBJS) $(ISO9660_STAGE1_5_OBJS) \
737	    $(LIBS)
738
739$(ISO9660_STAGE1_5_ASMOBJS): $$(@:iso9660_stage1_5_exec-%.o=%.S)
740	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:iso9660_stage1_5_exec-%.o=%.S)
741
742$(ISO9660_STAGE1_5_OBJS): $$(@:iso9660_stage1_5_exec-%.o=%.c)
743	$(CC) $(CFLAGS) -c -o $@ $(@:iso9660_stage1_5_exec-%.o=%.c)
744
745#
746# JFS stage 1.5
747#
748$(JFS_STAGE1_5_EXEC): $(JFS_STAGE1_5_ASMOBJS) $(JFS_STAGE1_5_OBJS)
749	$(RM) $@
750	$(LINK) -o $@ $(JFS_STAGE1_5_ASMOBJS) $(JFS_STAGE1_5_OBJS) $(LIBS)
751
752$(JFS_STAGE1_5_ASMOBJS): $$(@:jfs_stage1_5_exec-%.o=%.S)
753	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:jfs_stage1_5_exec-%.o=%.S)
754
755$(JFS_STAGE1_5_OBJS): $$(@:jfs_stage1_5_exec-%.o=%.c)
756	$(CC) $(CFLAGS) -c -o $@ $(@:jfs_stage1_5_exec-%.o=%.c)
757
758#
759# Minix stage 1.5
760#
761$(MINIX_STAGE1_5_EXEC): $(MINIX_STAGE1_5_ASMOBJS) $(MINIX_STAGE1_5_OBJS)
762	$(RM) $@
763	$(LINK) -o $@ $(MINIX_STAGE1_5_ASMOBJS) $(MINIX_STAGE1_5_OBJS) $(LIBS)
764
765$(MINIX_STAGE1_5_ASMOBJS): $$(@:minix_stage1_5_exec-%.o=%.S)
766	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:minix_stage1_5_exec-%.o=%.S)
767
768$(MINIX_STAGE1_5_OBJS): $$(@:minix_stage1_5_exec-%.o=%.c)
769	$(CC) $(CFLAGS) -c -o $@ $(@:minix_stage1_5_exec-%.o=%.c)
770
771#
772# nbgrub
773#
774$(NBGRUB_DATA): $(NBLOADER_DATA) $(DISKLESS_DATA)
775	$(RM) $@
776	cat $(NBLOADER_DATA) $(DISKLESS_DATA) > $@
777
778#
779# nbloader
780#
781$(NBLOADER_EXEC): $(NBLOADER_ASMOBJS) $(NBLOADER_OBJS)
782	$(RM) $@
783	$(LINK) -o $@ $(NBLOADER_ASMOBJS) $(NBLOADER_OBJS) $(LIBS)
784
785$(NBLOADER_ASMOBJS): $$(@:nbloader_exec-%.o=%.S) diskless_size.h
786	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:nbloader_exec-%.o=%.S)
787
788$(NBLOADER_OBJS): $$(@:nbloader_exec-%.o=%.c)
789	$(CC) $(CFLAGS) -c -o $@ $(@:nbloader_exec-%.o=%.c)
790
791#
792# Pre-stage2
793#
794$(PRE_STAGE2_EXEC): $(PRE_STAGE2_ASMOBJS) $(PRE_STAGE2_OBJS)
795	$(RM) $@
796	$(LINK) -o $@ $(PRE_STAGE2_ASMOBJS) $(PRE_STAGE2_OBJS) $(LIBS)
797
798$(PRE_STAGE2_ASMOBJS): $$(@:pre_stage2_exec-%.o=%.S)
799	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:pre_stage2_exec-%.o=%.S)
800
801$(PRE_STAGE2_OBJS): $$(@:pre_stage2_exec-%.o=%.c)
802	$(CC) $(CFLAGS) -c -o $@ $(@:pre_stage2_exec-%.o=%.c)
803
804#
805# pxegrub
806#
807$(PXEGRUB_DATA): $(PXELOADER_DATA) $(DISKLESS_DATA)
808	$(RM) $@
809	cat $(PXELOADER_DATA) $(DISKLESS_DATA) > $@
810
811#
812# pxeloader
813#
814$(PXELOADER_EXEC): $(PXELOADER_ASMOBJS) $(PXELOADER_OBJS)
815	$(RM) $@
816	$(LINK) -o $@ $(PXELOADER_ASMOBJS) $(PXELOADER_OBJS) $(LIBS)
817
818$(PXELOADER_ASMOBJS): $$(@:pxeloader_exec-%.o=%.S) diskless_size.h
819	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:pxeloader_exec-%.o=%.S)
820
821$(PXELOADER_OBJS): $$(@:pxeloader_exec-%.o=%.c)
822	$(CC) $(CFLAGS) -c -o $@ $(@:pxeloader_exec-%.o=%.c)
823
824#
825# ReiserFS stage 1.5
826#
827$(REISERFS_STAGE1_5_EXEC): $(REISERFS_STAGE1_5_ASMOBJS)	\
828	$(REISERFS_STAGE1_5_OBJS)
829	$(RM) $@
830	$(LINK) -o $@ $(REISERFS_STAGE1_5_ASMOBJS) $(REISERFS_STAGE1_5_OBJS) \
831	    $(LIBS)
832
833$(REISERFS_STAGE1_5_ASMOBJS): $$(@:reiserfs_stage1_5_exec-%.o=%.S)
834	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:reiserfs_stage1_5_exec-%.o=%.S)
835
836$(REISERFS_STAGE1_5_OBJS): $$(@:reiserfs_stage1_5_exec-%.o=%.c)
837	$(CC) $(CFLAGS) -c -o $@ $(@:reiserfs_stage1_5_exec-%.o=%.c)
838
839#
840# stage2
841#
842$(STAGE2_DATA): $(START_DATA) $(PRE_STAGE2_DATA)
843	$(RM) $@
844	cat $(START_DATA) $(PRE_STAGE2_DATA) > $@
845#
846# Eltorito stage2
847#
848$(STAGE2_ELTORITO_DATA): $(START_ELTORITO_DATA) $(PRE_STAGE2_DATA)
849	$(RM) $@
850	cat $(START_ELTORITO_DATA) $(PRE_STAGE2_DATA) > $@
851
852#
853# start
854#
855$(START_EXEC): $(START_ASMOBJS) $(START_OBJS)
856	$(RM) $@
857	$(LINK) -o $@ $(START_ASMOBJS) $(START_OBJS) $(LIBS)
858
859$(START_ASMOBJS): $$(@:start_exec-%.o=%.S) stage2_size.h
860	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:start_exec-%.o=%.S)
861
862$(START_OBJS): $$(@:start_exec-%.o=%.c)
863	$(CC) $(CFLAGS) -c -o $@ $(@:start_exec-%.o=%.c)
864
865#
866# Eltorito start
867#
868$(START_ELTORITO_EXEC): $(START_ELTORITO_ASMOBJS) $(START_ELTORITO_OBJS)
869	$(RM) $@
870	$(LINK) -o $@ $(START_ELTORITO_ASMOBJS) $(START_ELTORITO_OBJS) $(LIBS)
871
872$(START_ELTORITO_ASMOBJS): $$(@:start_eltorito_exec-%.o=%.S) stage2_size.h
873	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:start_eltorito_exec-%.o=%.S)
874
875$(START_ELTORITO_OBJS): $$(@:start_eltorito_exec-%.o=%.c)
876	$(CC) $(CFLAGS) -c -o $@ $(@:start_eltorito_exec-%.o=%.c)
877
878#
879# UFS2 stage 1.5
880#
881$(UFS2_STAGE1_5_EXEC): $(UFS2_STAGE1_5_ASMOBJS) $(UFS2_STAGE1_5_OBJS)
882	$(RM) $@
883	$(LINK) -o $@ $(UFS2_STAGE1_5_ASMOBJS) $(UFS2_STAGE1_5_OBJS) $(LIBS)
884
885$(UFS2_STAGE1_5_ASMOBJS): $$(@:ufs2_stage1_5_exec-%.o=%.S)
886	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:ufs2_stage1_5_exec-%.o=%.S)
887
888$(UFS2_STAGE1_5_OBJS): $$(@:ufs2_stage1_5_exec-%.o=%.c)
889	$(CC) $(CFLAGS) -c -o $@ $(@:ufs2_stage1_5_exec-%.o=%.c)
890
891#
892# UFS stage 1.5
893#
894$(UFS_STAGE1_5_EXEC): $(UFS_STAGE1_5_ASMOBJS) $(UFS_STAGE1_5_OBJS)
895	$(RM) $@
896	$(LINK) -o $@ $(UFS_STAGE1_5_ASMOBJS) $(UFS_STAGE1_5_OBJS) $(LIBS)
897
898$(UFS_STAGE1_5_ASMOBJS): $$(@:ufs_stage1_5_exec-%.o=%.S)
899	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:ufs_stage1_5_exec-%.o=%.S)
900
901$(UFS_STAGE1_5_OBJS): $$(@:ufs_stage1_5_exec-%.o=%.c)
902	$(CC) $(CFLAGS) -c -o $@ $(@:ufs_stage1_5_exec-%.o=%.c)
903
904#
905# ZFS stage 1.5
906#
907$(ZFS_STAGE1_5_EXEC): $(ZFS_STAGE1_5_ASMOBJS) $(ZFS_STAGE1_5_OBJS)
908	$(RM) $@
909	$(LINK) -o $@ $(ZFS_STAGE1_5_ASMOBJS) $(ZFS_STAGE1_5_OBJS) $(LIBS)
910
911$(ZFS_STAGE1_5_ASMOBJS): $$(@:zfs_stage1_5_exec-%.o=%.S)
912	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:zfs_stage1_5_exec-%.o=%.S)
913
914$(ZFS_STAGE1_5_OBJS): $$(@:zfs_stage1_5_exec-%.o=%.c)
915	$(CC) $(CFLAGS) -c -o $@ $(@:zfs_stage1_5_exec-%.o=%.c)
916
917#
918# VSTa stage 1.5
919#
920$(VSTAFS_STAGE1_5_EXEC): $(VSTAFS_STAGE1_5_ASMOBJS) $(VSTAFS_STAGE1_5_OBJS)
921	$(RM) $@
922	$(LINK) -o $@ $(VSTAFS_STAGE1_5_ASMOBJS) $(VSTAFS_STAGE1_5_OBJS) $(LIBS)
923
924$(VSTAFS_STAGE1_5_ASMOBJS): $$(@:vstafs_stage1_5_exec-%.o=%.S)
925	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:vstafs_stage1_5_exec-%.o=%.S)
926
927$(VSTAFS_STAGE1_5_OBJS): $$(@:vstafs_stage1_5_exec-%.o=%.c)
928	$(CC) $(CFLAGS) -c -o $@ $(@:vstafs_stage1_5_exec-%.o=%.c)
929
930#
931# SGI XFS stage 1.5
932#
933$(XFS_STAGE1_5_EXEC): $(XFS_STAGE1_5_ASMOBJS) $(XFS_STAGE1_5_OBJS)
934	$(RM) $@
935	$(LINK) -o $@ $(XFS_STAGE1_5_ASMOBJS) $(XFS_STAGE1_5_OBJS) $(LIBS)
936
937$(XFS_STAGE1_5_ASMOBJS): $$(@:xfs_stage1_5_exec-%.o=%.S)
938	$(CCAS) $(CCASFLAGS) -c -o $@ $(@:xfs_stage1_5_exec-%.o=%.S)
939
940$(XFS_STAGE1_5_OBJS): $$(@:xfs_stage1_5_exec-%.o=%.c)
941	$(CC) $(CFLAGS) -c -o $@ $(@:xfs_stage1_5_exec-%.o=%.c)
942
943
944
945install: all $(INSTALL_TARGETS)
946
947$(ROOT_BOOT_GRUB)/%: $(ROOT_BOOT_GRUB) %
948	$(INS.file)
949
950$(SRC_DIR)/%: $(SRC_DIR) %
951	$(INS.file)
952
953$(SRC_ZFSINC_DIR)/%: $(SRC_ZFSINC_DIR) %
954	$(INS.file)
955
956$(ROOT_BOOT_GRUB) $(SRC_DIR) $(SRC_ZFSINC_DIR):
957	$(INS.dir)
958
959clean: _FORCE
960	$(RM) *.o $(BUILT_SOURCES) $(LIBRARIES) $(PROGRAMS) $(NOINSTALL_DATA)
961
962clobber: clean
963	$(RM) $(INSTALL_DATA)
964
965_FORCE:
966