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 CP=cp !! 020 CFLAGS = -Wall -nostdinc -ffreestanding -DKERNEL_SOS
021 STRIP=strip !! 021 LIBGCC := $(shell $(CC) -print-libgcc-file-name)
022 CFLAGS = -Wall -nostdinc -ffreestanding -DKER <<
023 LIBGCC = $(shell $(CC) -print-libgcc-file-nam <<
024 LDFLAGS = --warn-common -nostdlib 022 LDFLAGS = --warn-common -nostdlib
025 OBJECTS = bootstrap/multiboot.o 023 OBJECTS = bootstrap/multiboot.o \
026 hwcore/idt.o hwcore/gdt.o 024 hwcore/idt.o hwcore/gdt.o \
027 hwcore/swintr.o hwcore/swintr_wrappe 025 hwcore/swintr.o hwcore/swintr_wrappers.o \
028 hwcore/exception.o hwcore/exception_ 026 hwcore/exception.o hwcore/exception_wrappers.o \
029 hwcore/irq.o hwcore/irq_wrappers.o h 027 hwcore/irq.o hwcore/irq_wrappers.o hwcore/i8259.o \
030 hwcore/paging.o hwcore/i8254.o !! 028 hwcore/paging.o \
>> 029 hwcore/i8254.o drivers/x86_videomem.o drivers/bochs.o \
031 hwcore/cpu_context.o hwcore/cpu_cont 030 hwcore/cpu_context.o hwcore/cpu_context_switch.o \
032 hwcore/mm_context.o 031 hwcore/mm_context.o \
033 sos/kmem_vmm.o sos/kmem_slab.o sos/k 032 sos/kmem_vmm.o sos/kmem_slab.o sos/kmalloc.o \
034 sos/physmem.o sos/klibc.o 033 sos/physmem.o sos/klibc.o \
035 sos/thread.o sos/kwaitq.o 034 sos/thread.o sos/kwaitq.o \
036 sos/time.o sos/sched.o sos/ksynch.o 035 sos/time.o sos/sched.o sos/ksynch.o \
037 sos/process.o sos/syscall.o 036 sos/process.o sos/syscall.o \
038 sos/assert.o sos/main.o sos/mouse_si !! 037 sos/assert.o sos/main.o sos/mouse_sim.o \
039 sos/uaccess.o sos/calcload.o 038 sos/uaccess.o sos/calcload.o \
040 sos/umem_vmm.o sos/binfmt_elf32.o !! 039 userland/userprogs.kimg sos/test-art7.o
041 drivers/x86_videomem.o drivers/bochs <<
042 drivers/zero.o drivers/mem.o <<
043 drivers/kbd.o drivers/kbdmapfr.o <<
044 drivers/tty.o drivers/serial.o drive <<
045 sos/hash.o sos/fs.o sos/fs_nscache.o <<
046 drivers/fs_virtfs.o sos/chardev.o <<
047 userland/userprogs.kimg <<
048 040
049 KERNEL_OBJ = sos.elf 041 KERNEL_OBJ = sos.elf
050 KERNEL_LOAD = sos.gz <<
051 MULTIBOOT_IMAGE = fd.img 042 MULTIBOOT_IMAGE = fd.img
052 PWD := $(shell pwd | sed 's/"/\\\"/g;s/\$$/\\\ !! 043 PWD := $(shell pwd)
053 044
054 045
055 all: $(MULTIBOOT_IMAGE) 046 all: $(MULTIBOOT_IMAGE)
056 047
057 $(MULTIBOOT_IMAGE): $(KERNEL_LOAD) !! 048 $(MULTIBOOT_IMAGE): $(KERNEL_OBJ)
058 ./support/build_image.sh $@ $< 049 ./support/build_image.sh $@ $<
059 050
060 $(KERNEL_LOAD): $(KERNEL_OBJ) <<
061 $(CP) $< $<.strip && $(STRIP) -sx -R . <<
062 gzip < $<.strip > $@ <<
063 <<
064 $(KERNEL_OBJ): $(OBJECTS) ./support/sos.lds 051 $(KERNEL_OBJ): $(OBJECTS) ./support/sos.lds
065 $(LD) $(LDFLAGS) -T ./support/sos.lds 052 $(LD) $(LDFLAGS) -T ./support/sos.lds -o $@ $(OBJECTS) $(LIBGCC)
066 -nm -C $@ | cut -d ' ' -f 1,3 > sos.ma 053 -nm -C $@ | cut -d ' ' -f 1,3 > sos.map
067 size $@ 054 size $@
068 055
069 -include .mkvars 056 -include .mkvars
070 057
071 # Create the userland programs to include in t 058 # Create the userland programs to include in the kernel image
072 userland/userprogs.kimg: FORCE 059 userland/userprogs.kimg: FORCE
073 $(MAKE) -C userland 060 $(MAKE) -C userland
074 061
075 062
076 %.o: %.c 063 %.o: %.c
077 $(CC) "-I$(PWD)" -c "$<" $(CFLAGS) -o !! 064 $(CC) -I$(PWD) -c $< $(CFLAGS) -o $@
078 065
079 066
080 %.o: %.S 067 %.o: %.S
081 $(CC) "-I$(PWD)" -c "$<" $(CFLAGS) -DA !! 068 $(CC) -I$(PWD) -c $< $(CFLAGS) -DASM_SOURCE=1 -o $@
082 069
083 FORCE: 070 FORCE:
084 @ 071 @
085 072
086 073
087 clean: 074 clean:
088 $(RM) *.img *.o mtoolsrc *~ menu.txt * !! 075 $(RM) *.img *.o mtoolsrc *~ menu.txt *.img *.elf *.bin *.map
089 $(RM) *.log *.out bochs* sos.gz !! 076 $(RM) *.log *.out bochs*
090 $(RM) bootstrap/*.o bootstrap/*~ 077 $(RM) bootstrap/*.o bootstrap/*~
091 $(RM) drivers/*.o drivers/*~ 078 $(RM) drivers/*.o drivers/*~
092 $(RM) hwcore/*.o hwcore/*~ 079 $(RM) hwcore/*.o hwcore/*~
093 $(RM) sos/*.o sos/*~ 080 $(RM) sos/*.o sos/*~
094 $(RM) support/*~ 081 $(RM) support/*~
095 $(RM) extra/*~ 082 $(RM) extra/*~
096 $(MAKE) -C extra clean <<
097 $(MAKE) -C userland clean 083 $(MAKE) -C userland clean