Fixes ext2 RAM block device linking
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 15 Dec 2011 22:32:26 +0000 (14:32 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 15 Dec 2011 22:32:26 +0000 (14:32 -0800)
Same deal as with 5aac42b0631a8, we need to convert it to a .o to link
it in.  It's a bit crappy, since we have to process another large file,
but it works for now.

kern/src/Makefrag

index bbe1ce1..3e9f8b9 100644 (file)
@@ -8,6 +8,7 @@ KERN_SRC_DIR = $(KERN_DIR)/src
 OBJDIRS += $(KERN_SRC_DIR)
 KERN_CPIO = initramfs.cpio
 KERN_CPIO_OBJ = $(KERN_CPIO).o
+EXT2_BDEV_OBJ = $(shell basename $(EXT2_BDEV)).o
 
 # entry.S must be first, so that it's the first code in the text segment!!!
 #
@@ -73,7 +74,8 @@ KERN_OBJFILES  := $(patsubst $(KERN_DIR)/%.S, \
 
 KERN_LDDEPENDS := $(KERN_OBJFILES) $(ARCH_DIR)/$(TARGET_ARCH)/kernel.ld \
                   $(OBJDIR)/$(KERN_DIR)/libivykern.a \
-                  $(OBJDIR)/$(KERN_DIR)/$(KERN_CPIO_OBJ) $(EXT2_BDEV)
+                  $(OBJDIR)/$(KERN_DIR)/$(KERN_CPIO_OBJ) \
+                  $(OBJDIR)/$(KERN_DIR)/$(EXT2_BDEV_OBJ)
 
 KERN_LDLIBS    := -livykern
 
@@ -99,6 +101,9 @@ LD_ARCH := $(shell $(OBJDUMP) -i | grep -v BFD | grep "^  [a-z]" | head -n1)
 $(OBJDIR)/$(KERN_DIR)/$(KERN_CPIO_OBJ): $(OBJDIR)/$(KERN_DIR)/$(KERN_CPIO)
        $(V)$(OBJCOPY) -I binary -B $(LD_ARCH) -O $(LD_EMULATION) $^ $@
 
+$(OBJDIR)/$(KERN_DIR)/$(EXT2_BDEV_OBJ): $(EXT2_BDEV)
+       $(V)$(OBJCOPY) -I binary -B $(LD_ARCH) -O $(LD_EMULATION) $^ $@
+
 $(OBJDIR)/$(KERN_DIR)/%.o: $(KERN_DIR)/%.c
        @echo + cc [KERN] $<
        @mkdir -p $(@D)
@@ -113,7 +118,7 @@ $(OBJDIR)/$(KERN_DIR)/kernel: $(KERN_LDDEPENDS)
        @echo + ld [KERN] $@
        $(V)$(LD) -o $@ $(KERN_LDFLAGS) $(KERN_OBJFILES) $(KERN_LDLIBS) \
                        $(KERN_GCC_LIB) $(OBJDIR)/$(KERN_DIR)/$(KERN_CPIO_OBJ) \
-                       $(EXT2_BDEV)
+                       $(OBJDIR)/$(KERN_DIR)/$(EXT2_BDEV_OBJ)
        $(V)$(OBJDUMP) -S $@ > $@.asm
        $(V)$(NM) -n $@ > $@.sym