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