Moves genbuf into kthreads
[akaros.git] / Makefile
index 04fd2d4..575d1ee 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -362,7 +362,7 @@ CMP_KERNEL_OBJ := $(KERNEL_OBJ).gz
 # KFS_PATH.  Future rules related to KFS will have issues (mkdir with no
 # argument, or a find of the entire pwd).  It's also possible someone provided
 # an empty path.  To deal with both, we'll just have a sensible default.
-kfs-paths :=  $(patsubst "%",%,$(CONFIG_KFS_PATHS))
+kfs-paths :=  $(subst $\",,$(CONFIG_KFS_PATHS))
 ifeq ($(kfs-paths),)
 kfs-paths := kern/kfs
 endif
@@ -419,15 +419,16 @@ endif
 kern_initramfs_files := $(shell mkdir -p $(kfs-paths); \
                           find $(kfs-paths))
 
+# Need to make an empty cpio, then append each kfs-path's contents
 $(kern_cpio) initramfs: $(kern_initramfs_files)
        @echo "  Building initramfs:"
        @if [ "$(CONFIG_KFS_CPIO_BIN)" != "" ]; then \
         sh $(CONFIG_KFS_CPIO_BIN); \
     fi
+       @cat /dev/null | cpio --quiet -oH newc -O $(kern_cpio)
        $(Q)for i in $(kfs-paths); do cd $$i; \
         echo "    Adding $$i to initramfs..."; \
-        find -L . | cpio --quiet -oH newc > \
-                       $(CURDIR)/$(kern_cpio); \
+        find -L . | cpio --quiet -oAH newc -O $(CURDIR)/$(kern_cpio); \
         cd $$OLDPWD; \
     done;
 
@@ -464,15 +465,17 @@ endif
 $(ext2_bdev_obj): $(ext2-bdev)
        $(Q)$(OBJCOPY) -I binary -B $(ld_arch) -O $(ld_emulation) $< $@
 
+# Not the worlds most elegant link command.  link-kernel takes the obj output
+# name, then the linker script, then everything else you'd dump on the ld
+# command line, including linker options and objects to link together.
+# 
+# After the script is done, we run the arch-specific command directly.
 quiet_cmd_link-akaros = LINK    $@
-      cmd_link-akaros = $(LD) -T kern/arch/$(ARCH)/$(KERNEL_LD) -o $@ \
-                              $(LDFLAGS_KERNEL) \
-                              $(akaros-deps) \
-                              $(gcc-lib) \
-                              $(kern_cpio_obj) \
-                              $(ext2_bdev_obj) ; \
-                              $(OBJDUMP) -S $@ > $@.asm; \
-                              $(ARCH_POST_LINK_CMD)
+      cmd_link-akaros = $(CONFIG_SHELL) scripts/link-kernel.sh $@ \
+                        kern/arch/$(ARCH)/$(KERNEL_LD) $(LDFLAGS_KERNEL) \
+                        $(akaros-deps) $(gcc-lib) $(kern_cpio_obj) \
+                        $(ext2_bdev_obj); \
+                        $(ARCH_POST_LINK_CMD)
 
 # For some reason, the if_changed doesn't work with FORCE (like it does in
 # Linux).  It looks like it can't find the .cmd file or something (also