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