diff options
| author | manuel <manuel@mausz.at> | 2012-03-27 11:51:08 +0200 |
|---|---|---|
| committer | manuel <manuel@mausz.at> | 2012-03-27 11:51:08 +0200 |
| commit | 4f670845ff9ab6c48bcb5f7bf4d4ef6dc3c3064b (patch) | |
| tree | 868c52e06f207b5ec8a3cc141f4b8b2bdfcc165c /Makefile.build | |
| parent | eae0bd57f0a26314a94785061888d193d186944a (diff) | |
| download | progos-4f670845ff9ab6c48bcb5f7bf4d4ef6dc3c3064b.tar.gz progos-4f670845ff9ab6c48bcb5f7bf4d4ef6dc3c3064b.tar.bz2 progos-4f670845ff9ab6c48bcb5f7bf4d4ef6dc3c3064b.zip | |
reorganize file structure to match the upstream requirements
Diffstat (limited to 'Makefile.build')
| -rw-r--r-- | Makefile.build | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/Makefile.build b/Makefile.build new file mode 100644 index 0000000..e997d27 --- /dev/null +++ b/Makefile.build | |||
| @@ -0,0 +1,109 @@ | |||
| 1 | # -*- makefile -*- | ||
| 2 | |||
| 3 | SRCDIR = ../.. | ||
| 4 | |||
| 5 | all: kernel.bin loader.bin | ||
| 6 | |||
| 7 | include ../../Make.config | ||
| 8 | include ../Make.vars | ||
| 9 | include ../../tests/Make.tests | ||
| 10 | |||
| 11 | # Compiler and assembler options. | ||
| 12 | kernel.bin: CPPFLAGS += -I$(SRCDIR)/lib/kernel | ||
| 13 | |||
| 14 | # Core kernel. | ||
| 15 | threads_SRC = threads/start.S # Startup code. | ||
| 16 | threads_SRC += threads/init.c # Main program. | ||
| 17 | threads_SRC += threads/thread.c # Thread management core. | ||
| 18 | threads_SRC += threads/switch.S # Thread switch routine. | ||
| 19 | threads_SRC += threads/interrupt.c # Interrupt core. | ||
| 20 | threads_SRC += threads/intr-stubs.S # Interrupt stubs. | ||
| 21 | threads_SRC += threads/synch.c # Synchronization. | ||
| 22 | threads_SRC += threads/palloc.c # Page allocator. | ||
| 23 | threads_SRC += threads/malloc.c # Subpage allocator. | ||
| 24 | |||
| 25 | # Device driver code. | ||
| 26 | devices_SRC = devices/pit.c # Programmable interrupt timer chip. | ||
| 27 | devices_SRC += devices/timer.c # Periodic timer device. | ||
| 28 | devices_SRC += devices/kbd.c # Keyboard device. | ||
| 29 | devices_SRC += devices/vga.c # Video device. | ||
| 30 | devices_SRC += devices/serial.c # Serial port device. | ||
| 31 | devices_SRC += devices/block.c # Block device abstraction layer. | ||
| 32 | devices_SRC += devices/partition.c # Partition block device. | ||
| 33 | devices_SRC += devices/ide.c # IDE disk block device. | ||
| 34 | devices_SRC += devices/input.c # Serial and keyboard input. | ||
| 35 | devices_SRC += devices/intq.c # Interrupt queue. | ||
| 36 | devices_SRC += devices/rtc.c # Real-time clock. | ||
| 37 | devices_SRC += devices/shutdown.c # Reboot and power off. | ||
| 38 | devices_SRC += devices/speaker.c # PC speaker. | ||
| 39 | |||
| 40 | # Library code shared between kernel and user programs. | ||
| 41 | lib_SRC = lib/debug.c # Debug helpers. | ||
| 42 | lib_SRC += lib/random.c # Pseudo-random numbers. | ||
| 43 | lib_SRC += lib/stdio.c # I/O library. | ||
| 44 | lib_SRC += lib/stdlib.c # Utility functions. | ||
| 45 | lib_SRC += lib/string.c # String functions. | ||
| 46 | lib_SRC += lib/arithmetic.c # 64-bit arithmetic for GCC. | ||
| 47 | lib_SRC += lib/ustar.c # Unix standard tar format utilities. | ||
| 48 | |||
| 49 | # Kernel-specific library code. | ||
| 50 | lib/kernel_SRC = lib/kernel/debug.c # Debug helpers. | ||
| 51 | lib/kernel_SRC += lib/kernel/list.c # Doubly-linked lists. | ||
| 52 | lib/kernel_SRC += lib/kernel/bitmap.c # Bitmaps. | ||
| 53 | lib/kernel_SRC += lib/kernel/hash.c # Hash tables. | ||
| 54 | lib/kernel_SRC += lib/kernel/console.c # printf(), putchar(). | ||
| 55 | |||
| 56 | # User process code. | ||
| 57 | userprog_SRC = userprog/process.c # Process loading. | ||
| 58 | userprog_SRC += userprog/pagedir.c # Page directories. | ||
| 59 | userprog_SRC += userprog/exception.c # User exception handler. | ||
| 60 | userprog_SRC += userprog/syscall.c # System call handler. | ||
| 61 | userprog_SRC += userprog/gdt.c # GDT initialization. | ||
| 62 | userprog_SRC += userprog/tss.c # TSS management. | ||
| 63 | |||
| 64 | # No virtual memory code yet. | ||
| 65 | #vm_SRC = vm/file.c # Some file. | ||
| 66 | |||
| 67 | # Filesystem code. | ||
| 68 | filesys_SRC = filesys/filesys.c # Filesystem core. | ||
| 69 | filesys_SRC += filesys/free-map.c # Free sector bitmap. | ||
| 70 | filesys_SRC += filesys/file.c # Files. | ||
| 71 | filesys_SRC += filesys/directory.c # Directories. | ||
| 72 | filesys_SRC += filesys/inode.c # File headers. | ||
| 73 | filesys_SRC += filesys/fsutil.c # Utilities. | ||
| 74 | |||
| 75 | SOURCES = $(foreach dir,$(KERNEL_SUBDIRS),$($(dir)_SRC)) | ||
| 76 | OBJECTS = $(patsubst %.c,%.o,$(patsubst %.S,%.o,$(SOURCES))) | ||
| 77 | DEPENDS = $(patsubst %.o,%.d,$(OBJECTS)) | ||
| 78 | |||
| 79 | threads/kernel.lds.s: CPPFLAGS += -P | ||
| 80 | threads/kernel.lds.s: threads/kernel.lds.S threads/loader.h | ||
| 81 | |||
| 82 | kernel.o: threads/kernel.lds.s $(OBJECTS) | ||
| 83 | $(LD) -T $< -o $@ $(OBJECTS) | ||
| 84 | |||
| 85 | kernel.bin: kernel.o | ||
| 86 | $(OBJCOPY) -R .note -R .comment -S $< $@ | ||
| 87 | |||
| 88 | threads/loader.o: threads/loader.S | ||
| 89 | $(CC) -c $< -o $@ $(ASFLAGS) $(CPPFLAGS) $(DEFINES) | ||
| 90 | |||
| 91 | loader.bin: threads/loader.o | ||
| 92 | $(LD) -N -e 0 -Ttext 0x7c00 --oformat binary -o $@ $< | ||
| 93 | |||
| 94 | os.dsk: kernel.bin | ||
| 95 | cat $^ > $@ | ||
| 96 | |||
| 97 | clean:: | ||
| 98 | rm -f $(OBJECTS) $(DEPENDS) | ||
| 99 | rm -f threads/loader.o threads/kernel.lds.s threads/loader.d | ||
| 100 | rm -f kernel.bin.tmp | ||
| 101 | rm -f kernel.o kernel.lds.s | ||
| 102 | rm -f kernel.bin loader.bin | ||
| 103 | rm -f bochsout.txt bochsrc.txt | ||
| 104 | rm -f results grade | ||
| 105 | |||
| 106 | Makefile: $(SRCDIR)/Makefile.build | ||
| 107 | cp $< $@ | ||
| 108 | |||
| 109 | -include $(DEPENDS) | ||
