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/kbd.o drivers/kbdmapfr.o !! 043 drivers/ide.o drivers/kbd.o drivers/kbdmapfr.o \
044 drivers/tty.o drivers/serial.o drive !! 044 drivers/serial.o drivers/tty.o drivers/part.o \
045 sos/hash.o sos/fs.o sos/fs_nscache.o !! 045 drivers/console.o \
046 drivers/fs_virtfs.o sos/chardev.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 \
047 userland/userprogs.kimg 049 userland/userprogs.kimg
048 050
049 KERNEL_OBJ = sos.elf 051 KERNEL_OBJ = sos.elf
050 KERNEL_LOAD = sos.gz 052 KERNEL_LOAD = sos.gz
051 MULTIBOOT_IMAGE = fd.img 053 MULTIBOOT_IMAGE = fd.img
052 PWD := $(shell pwd | sed 's/"/\\\"/g;s/\$$/\\\ 054 PWD := $(shell pwd | sed 's/"/\\\"/g;s/\$$/\\\$$/g')
053 055
054 056
055 all: $(MULTIBOOT_IMAGE) 057 all: $(MULTIBOOT_IMAGE)
056 058
057 $(MULTIBOOT_IMAGE): $(KERNEL_LOAD) 059 $(MULTIBOOT_IMAGE): $(KERNEL_LOAD)
058 ./support/build_image.sh $@ $< 060 ./support/build_image.sh $@ $<
059 061
060 $(KERNEL_LOAD): $(KERNEL_OBJ) 062 $(KERNEL_LOAD): $(KERNEL_OBJ)
061 $(CP) $< $<.strip && $(STRIP) -sx -R . 063 $(CP) $< $<.strip && $(STRIP) -sx -R .comment $<.strip
062 gzip < $<.strip > $@ 064 gzip < $<.strip > $@
063 065
064 $(KERNEL_OBJ): $(OBJECTS) ./support/sos.lds 066 $(KERNEL_OBJ): $(OBJECTS) ./support/sos.lds
065 $(LD) $(LDFLAGS) -T ./support/sos.lds 067 $(LD) $(LDFLAGS) -T ./support/sos.lds -o $@ $(OBJECTS) $(LIBGCC)
066 -nm -C $@ | cut -d ' ' -f 1,3 > sos.ma 068 -nm -C $@ | cut -d ' ' -f 1,3 > sos.map
067 size $@ 069 size $@
068 070
069 -include .mkvars 071 -include .mkvars
070 072
071 # Create the userland programs to include in t 073 # Create the userland programs to include in the kernel image
072 userland/userprogs.kimg: FORCE 074 userland/userprogs.kimg: FORCE
073 $(MAKE) -C userland 075 $(MAKE) -C userland
074 076
075 077
076 %.o: %.c 078 %.o: %.c
077 $(CC) "-I$(PWD)" -c "$<" $(CFLAGS) -o 079 $(CC) "-I$(PWD)" -c "$<" $(CFLAGS) -o "$@"
078 080
079 081
080 %.o: %.S 082 %.o: %.S
081 $(CC) "-I$(PWD)" -c "$<" $(CFLAGS) -DA 083 $(CC) "-I$(PWD)" -c "$<" $(CFLAGS) -DASM_SOURCE=1 -o "$@"
082 084
083 FORCE: 085 FORCE:
084 @ 086 @
085 087
086 088
087 clean: 089 clean:
088 $(RM) *.img *.o mtoolsrc *~ menu.txt * !! 090 $(RM) fd*.img *.o mtoolsrc *~ menu.txt *.elf *.bin *.strip *.map
089 $(RM) *.log *.out bochs* sos.gz 091 $(RM) *.log *.out bochs* sos.gz
090 $(RM) bootstrap/*.o bootstrap/*~ 092 $(RM) bootstrap/*.o bootstrap/*~
091 $(RM) drivers/*.o drivers/*~ 093 $(RM) drivers/*.o drivers/*~
092 $(RM) hwcore/*.o hwcore/*~ 094 $(RM) hwcore/*.o hwcore/*~
093 $(RM) sos/*.o sos/*~ 095 $(RM) sos/*.o sos/*~
094 $(RM) support/*~ 096 $(RM) support/*~
095 $(RM) extra/*~ 097 $(RM) extra/*~
096 $(MAKE) -C extra clean 098 $(MAKE) -C extra clean
097 $(MAKE) -C userland clean 099 $(MAKE) -C userland clean