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