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