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