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