Isolate x86-specific code in recently-added tests
[akaros.git] / kern / Makefrag
index b3287ef..d0d60c9 100644 (file)
@@ -1,84 +1,12 @@
-#
-# Makefile fragment for JOS kernel.
-# This is NOT a complete makefile;
-# you must run GNU make in the top-level directory
-# where the GNUmakefile is located.
-#
+KERN_DIR := kern
 
-OBJDIRS += kern
-#CC=ivycc --save-temps --trace --deputy 
-CC=ivycc 
+KERN_CFLAGS += $(CFLAGS) -DROS_KERNEL
+KERN_CFLAGS += -I$(INCLUDE_DIR)
+KERN_LDFLAGS := $(LDFLAGS)
 
-KERN_LDFLAGS := $(LDFLAGS) -T kern/kernel.ld -nostdlib
+include $(KERN_DIR)/arch/$(TARGET_ARCH)/boot/Makefrag
+include $(KERN_DIR)/ivy/Makefrag
+include $(KERN_DIR)/arch/$(TARGET_ARCH)/Makefrag
+include $(KERN_DIR)/src/Makefrag
 
-# entry.S must be first, so that it's the first code in the text segment!!!
-#
-# We also snatch the use of a couple handy source files
-# from the lib directory, to avoid gratuitous code duplication.
-KERN_SRCFILES :=       kern/entry.S \
-                       kern/init.c \
-                       kern/console.c \
-                       kern/monitor.c \
-                       kern/pmap.c \
-                       kern/env.c \
-                       kern/kclock.c \
-                       kern/picirq.c \
-                       kern/printf.c \
-                       kern/trap.c \
-                       kern/trapentry.S \
-                       kern/sched.c \
-                       kern/syscall.c \
-                       kern/kdebug.c \
-                       lib/printfmt.c \
-                       lib/readline.c \
-                       lib/string.c
-
-# Only build files if they exist.
-KERN_SRCFILES := $(wildcard $(KERN_SRCFILES))
-
-KERN_BINFILES := 
-
-KERN_OBJFILES := $(patsubst %.c, $(OBJDIR)/%.o, $(KERN_SRCFILES))
-KERN_OBJFILES := $(patsubst %.S, $(OBJDIR)/%.o, $(KERN_OBJFILES))
-KERN_OBJFILES := $(patsubst obj/lib/%, obj/kern/%, $(KERN_OBJFILES))
-
-KERN_BINFILES := $(patsubst %, $(OBJDIR)/%, $(KERN_BINFILES))
-
-# How to build kernel object files
-$(OBJDIR)/kern/%.o: kern/%.c
-       @echo + cc $<
-       @mkdir -p $(@D)
-       $(V)$(CC) -nostdinc $(KERN_CFLAGS) -c -o $@ $<
-
-$(OBJDIR)/kern/%.o: kern/%.S
-       @echo + as $<
-       @mkdir -p $(@D)
-       $(V)$(CC) -nostdinc $(KERN_CFLAGS) -c -o $@ $<
-
-$(OBJDIR)/kern/%.o: lib/%.c
-       @echo + cc $<
-       @mkdir -p $(@D)
-       $(V)$(CC) -nostdinc $(KERN_CFLAGS) -c -o $@ $<
-
-# How to build the kernel itself
-$(OBJDIR)/kern/kernel: $(KERN_OBJFILES) $(KERN_BINFILES) kern/kernel.ld
-       @echo + ld $@
-       $(V)$(LD) -o $@ $(KERN_LDFLAGS) $(KERN_OBJFILES) $(GCC_LIB) -b binary $(KERN_BINFILES)
-       $(V)$(OBJDUMP) -S $@ > $@.asm
-       $(V)$(NM) -n $@ > $@.sym
-
-# How to build the Bochs disk image
-$(OBJDIR)/kern/bochs.img: $(OBJDIR)/kern/kernel $(OBJDIR)/boot/boot
-       @echo + mk $@
-       $(V)dd if=/dev/zero of=$(OBJDIR)/kern/bochs.img~ count=10000 2>/dev/null
-       $(V)dd if=$(OBJDIR)/boot/boot of=$(OBJDIR)/kern/bochs.img~ conv=notrunc 2>/dev/null
-       $(V)dd if=$(OBJDIR)/kern/kernel of=$(OBJDIR)/kern/bochs.img~ seek=1 conv=notrunc 2>/dev/null
-       $(V)mv $(OBJDIR)/kern/bochs.img~ $(OBJDIR)/kern/bochs.img
-
-all: $(OBJDIR)/kern/bochs.img
-
-grub: $(OBJDIR)/jos-grub
-
-$(OBJDIR)/jos-grub: $(OBJDIR)/kern/kernel
-       @echo + oc $@
-       $(V)$(OBJCOPY) --adjust-vma=0x10000000 $^ $@
+.PRECIOUS: $(OBJDIR)/$(KERN_DIR)/%.o