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