Diff markup
001 001
002 002
003 003
004 004
005 005
006 006
007 007
008 008
009 009
010 010
011 011
012 012
013 013
014 014
015 015
016 016
017 017
018 CC=gcc 018 CC=gcc
019 LD=ld 019 LD=ld
020 CFLAGS = -Wall -nostdinc -ffreestanding -DKER 020 CFLAGS = -Wall -nostdinc -ffreestanding -DKERNEL_SOS
021 LIBGCC := $(shell $(CC) -print-libgcc-file-nam 021 LIBGCC := $(shell $(CC) -print-libgcc-file-name)
022 LDFLAGS = --warn-common -nostdlib 022 LDFLAGS = --warn-common -nostdlib
023 OBJECTS = bootstrap/multiboot.o 023 OBJECTS = bootstrap/multiboot.o \
024 hwcore/idt.o hwcore/gdt.o 024 hwcore/idt.o hwcore/gdt.o \
025 hwcore/swintr.o hwcore/swintr_wrappe 025 hwcore/swintr.o hwcore/swintr_wrappers.o \
026 hwcore/exception.o hwcore/exception_ 026 hwcore/exception.o hwcore/exception_wrappers.o \
027 hwcore/irq.o hwcore/irq_wrappers.o h 027 hwcore/irq.o hwcore/irq_wrappers.o hwcore/i8259.o \
028 hwcore/paging.o !! 028 hwcore/paging.o \
029 hwcore/i8254.o drivers/x86_videomem. 029 hwcore/i8254.o drivers/x86_videomem.o drivers/bochs.o \
030 hwcore/cpu_context.o hwcore/cpu_cont 030 hwcore/cpu_context.o hwcore/cpu_context_switch.o \
031 hwcore/mm_context.o 031 hwcore/mm_context.o \
032 sos/kmem_vmm.o sos/kmem_slab.o sos/k 032 sos/kmem_vmm.o sos/kmem_slab.o sos/kmalloc.o \
033 sos/physmem.o sos/klibc.o 033 sos/physmem.o sos/klibc.o \
034 sos/thread.o sos/kwaitq.o 034 sos/thread.o sos/kwaitq.o \
035 sos/time.o sos/sched.o sos/ksynch.o 035 sos/time.o sos/sched.o sos/ksynch.o \
036 sos/process.o sos/syscall.o 036 sos/process.o sos/syscall.o \
037 sos/assert.o sos/main.o sos/mouse_si !! 037 sos/assert.o sos/main.o sos/mouse_sim.o \
038 sos/uaccess.o sos/calcload.o 038 sos/uaccess.o sos/calcload.o \
039 userland/userprogs.kimg sos/test-art !! 039 sos/umem_vmm.o sos/binfmt_elf32.o \
>> 040 drivers/zero.o drivers/mem.o \
>> 041 userland/userprogs.kimg
040 042
041 KERNEL_OBJ = sos.elf 043 KERNEL_OBJ = sos.elf
042 MULTIBOOT_IMAGE = fd.img 044 MULTIBOOT_IMAGE = fd.img
043 PWD := $(shell pwd) 045 PWD := $(shell pwd)
044 046
045 047
046 all: $(MULTIBOOT_IMAGE) 048 all: $(MULTIBOOT_IMAGE)
047 049
048 $(MULTIBOOT_IMAGE): $(KERNEL_OBJ) 050 $(MULTIBOOT_IMAGE): $(KERNEL_OBJ)
049 ./support/build_image.sh $@ $< 051 ./support/build_image.sh $@ $<
050 052
051 $(KERNEL_OBJ): $(OBJECTS) ./support/sos.lds 053 $(KERNEL_OBJ): $(OBJECTS) ./support/sos.lds
052 $(LD) $(LDFLAGS) -T ./support/sos.lds 054 $(LD) $(LDFLAGS) -T ./support/sos.lds -o $@ $(OBJECTS) $(LIBGCC)
053 -nm -C $@ | cut -d ' ' -f 1,3 > sos.ma 055 -nm -C $@ | cut -d ' ' -f 1,3 > sos.map
054 size $@ 056 size $@
055 057
056 -include .mkvars 058 -include .mkvars
057 059
058 # Create the userland programs to include in t 060 # Create the userland programs to include in the kernel image
059 userland/userprogs.kimg: FORCE 061 userland/userprogs.kimg: FORCE
060 $(MAKE) -C userland 062 $(MAKE) -C userland
061 063
062 064
063 %.o: %.c 065 %.o: %.c
064 $(CC) -I$(PWD) -c $< $(CFLAGS) -o $@ 066 $(CC) -I$(PWD) -c $< $(CFLAGS) -o $@
065 067
066 068
067 %.o: %.S 069 %.o: %.S
068 $(CC) -I$(PWD) -c $< $(CFLAGS) -DASM_S 070 $(CC) -I$(PWD) -c $< $(CFLAGS) -DASM_SOURCE=1 -o $@
069 071
070 FORCE: 072 FORCE:
071 @ 073 @
072 074
073 075
074 clean: 076 clean:
075 $(RM) *.img *.o mtoolsrc *~ menu.txt * 077 $(RM) *.img *.o mtoolsrc *~ menu.txt *.img *.elf *.bin *.map
076 $(RM) *.log *.out bochs* 078 $(RM) *.log *.out bochs*
077 $(RM) bootstrap/*.o bootstrap/*~ 079 $(RM) bootstrap/*.o bootstrap/*~
078 $(RM) drivers/*.o drivers/*~ 080 $(RM) drivers/*.o drivers/*~
079 $(RM) hwcore/*.o hwcore/*~ 081 $(RM) hwcore/*.o hwcore/*~
080 $(RM) sos/*.o sos/*~ 082 $(RM) sos/*.o sos/*~
081 $(RM) support/*~ 083 $(RM) support/*~
082 $(RM) extra/*~ 084 $(RM) extra/*~
083 $(MAKE) -C userland clean 085 $(MAKE) -C userland clean