- Timestamp:
- 2005-11-07T20:04:30Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c4e8ed9d
- Parents:
- d90ca68
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Makefile
rd90ca68 re16e036a 1 # 2 # Copyright (C) 2005 Martin Decky 3 # All rights reserved. 4 # 5 # Redistribution and use in source and binary forms, with or without 6 # modification, are permitted provided that the following conditions 7 # are met: 8 # 9 # - Redistributions of source code must retain the above copyright 10 # notice, this list of conditions and the following disclaimer. 11 # - Redistributions in binary form must reproduce the above copyright 12 # notice, this list of conditions and the following disclaimer in the 13 # documentation and/or other materials provided with the distribution. 14 # - The name of the author may not be used to endorse or promote products 15 # derived from this software without specific prior written permission. 16 # 17 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 # 28 29 ## Kernel release 30 # 31 32 VERSION = 0 33 PATCHLEVEL = 1 34 SUBLEVEL = 0 35 EXTRAVERSION = 36 NAME = Dawn 37 RELEASE = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) 38 39 ## Make some default assumptions 40 # 41 42 ifndef ARCH 43 ARCH = ia32 44 endif 45 46 ## Common compiler flags 47 # 48 49 CFLAGS = -fno-builtin -fomit-frame-pointer -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -nostdlib -nostdinc -Igeneric/include/ 50 LFLAGS = -M 51 52 ## Setup kernel configuration 53 # 54 1 55 include Makefile.config 2 56 include arch/$(ARCH)/Makefile.inc 3 57 include genarch/Makefile.inc 4 58 5 sources=generic/src/cpu/cpu.c \ 59 ifeq ($(CONFIG_DEBUG),n) 60 DEFS += -DNDEBUG 61 endif 62 ifeq ($(CONFIG_DEBUG_SPINLOCK),y) 63 DEFS += -DDEBUG_SPINLOCK 64 endif 65 66 ## Toolchain configuration 67 # 68 69 ifeq ($(COMPILER),native) 70 CC = gcc 71 AS = as 72 LD = ld 73 OBJCOPY = objcopy 74 OBJDUMP = objdump 75 else 76 CC = $(TOOLCHAIN_DIR)/$(TARGET)-gcc 77 AS = $(TOOLCHAIN_DIR)/$(TARGET)-as 78 LD = $(TOOLCHAIN_DIR)/$(TARGET)-ld 79 OBJCOPY = $(TOOLCHAIN_DIR)/$(TARGET)-objcopy 80 OBJDUMP = $(TOOLCHAIN_DIR)/$(TARGET)-objdump 81 endif 82 83 ## Generic kernel sources 84 # 85 86 GENERIC_SOURCES = \ 87 generic/src/cpu/cpu.c \ 6 88 generic/src/main/main.c \ 7 89 generic/src/main/kinit.c \ … … 36 118 generic/src/fb/font-8x16.c 37 119 38 # CFLAGS options same for all targets 39 CFLAGS+=-nostdinc -Igeneric/include/ -Werror-implicit-function-declaration -Wmissing-prototypes -Werror 120 GENERIC_OBJECTS := $(addsuffix .o,$(basename $(GENERIC_SOURCES))) 121 ARCH_OBJECTS := $(addsuffix .o,$(basename $(ARCH_SOURCES))) 122 GENARCH_OBJECTS := $(addsuffix .o,$(basename $(GENARCH_SOURCES))) 40 123 41 ifdef DEBUG_SPINLOCK 42 CFLAGS+=-D$(DEBUG_SPINLOCK) 43 endif 124 .PHONY: all clean config depend 44 125 45 ifdef USERSPACE 46 CFLAGS+=-D$(USERSPACE) 47 endif 48 49 ifdef TEST 50 test_objects:=$(addsuffix .o,$(basename test/$(TEST_DIR)/$(TEST_FILE))) 51 CFLAGS+=-D$(TEST) 52 endif 53 arch_objects:=$(addsuffix .o,$(basename $(arch_sources))) 54 genarch_objects:=$(addsuffix .o,$(basename $(genarch_sources))) 55 objects:=$(addsuffix .o,$(basename $(sources))) 56 57 .PHONY : all config depend build clean dist-clean boot 58 59 all: dist-clean config depend build 126 all: kernel.bin 60 127 61 128 -include Makefile.depend 62 129 130 clean: 131 find generic/src/ arch/$(ARCH)/src/ genarch/src/ -name '*.o' -exec rm \{\} \; 132 -rm -f kernel.bin kernel.map kernel.map.pre kernel.objdump src/debug/real_map.bin Makefile.depend generic/include/arch generic/include/genarch 133 63 134 config: 64 find generic/src/ generic/include/ -name arch -type l -exec rm \{\} \; 65 find generic/src/ generic/include/ -name genarch -type l -exec rm \{\} \; 66 ln -s ../../arch/$(ARCH)/src/ generic/src/arch 67 ln -s ../../arch/$(ARCH)/include/ generic/include/arch 68 ln -s ../../genarch/src/ generic/src/genarch 69 ln -s ../../genarch/include/ generic/include/genarch 135 ln -sfn ../../arch/$(ARCH)/include/ generic/include/arch 136 ln -sfn ../../genarch/include/ generic/include/genarch 70 137 71 depend: 72 $(CC) $(CFLAGS) -M $( arch_sources) $(genarch_sources) $(sources) >Makefile.depend138 depend: config 139 $(CC) $(CFLAGS) -M $(ARCH_SOURCES) $(GENARCH_SOURCES) $(GENERIC_SOURCES) > Makefile.depend 73 140 74 build: kernel.bin boot 141 arch/$(ARCH)/_link.ld: arch/$(ARCH)/_link.ld.in 142 $(CC) $(CFLAGS) -E -x c $< | grep -v "^\#" > $@ 75 143 76 clean: 77 find generic/src/ arch/$(ARCH)/src/ genarch/src/ test/ -name '*.o' -exec rm \{\} \; 78 -rm *.bin kernel.map kernel.map.pre kernel.objdump generic/src/debug/real_map.bin 79 $(MAKE) -C arch/$(ARCH)/boot/ clean 80 81 dist-clean: 82 find generic/src/ generic/include/ -name arch -type l -exec rm \{\} \; 83 find generic/src/ generic/include/ -name genarch -type l -exec rm \{\} \; 84 -rm Makefile.depend 85 -$(MAKE) clean 86 87 generic/src/debug/real_map.bin: $(arch_objects) $(genarch_objects) $(objects) $(test_objects) arch/$(ARCH)/_link.ld 144 generic/src/debug/real_map.bin: depend arch/$(ARCH)/_link.ld $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) 88 145 $(OBJCOPY) -I binary -O $(BFD_NAME) -B $(BFD_ARCH) --prefix-sections=symtab Makefile generic/src/debug/empty_map.o 89 $(LD) -T arch/$(ARCH)/_link.ld $(LFLAGS) $( arch_objects) $(genarch_objects) $(objects) $(test_objects) generic/src/debug/empty_map.o -o $@ -Map kernel.map.pre90 $(OBJDUMP) -t $( arch_objects) $(genarch_objects) $(objects) $(test_objects) > kernel.objdump146 $(LD) -T arch/$(ARCH)/_link.ld $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) generic/src/debug/empty_map.o -o $@ -Map kernel.map.pre 147 $(OBJDUMP) -t $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) > kernel.objdump 91 148 tools/genmap.py kernel.map.pre kernel.objdump generic/src/debug/real_map.bin 92 149 … … 94 151 $(OBJCOPY) -I binary -O $(BFD_NAME) -B $(BFD_ARCH) --prefix-sections=symtab $< $@ 95 152 96 97 kernel.bin: $(arch_objects) $(genarch_objects) $(objects) $(test_objects) arch/$(ARCH)/_link.ld generic/src/debug/real_map.o 98 $(LD) -T arch/$(ARCH)/_link.ld $(LFLAGS) $(arch_objects) $(genarch_objects) $(objects) $(test_objects) generic/src/debug/real_map.o -o $@ -Map kernel.map 153 kernel.bin: depend arch/$(ARCH)/_link.ld $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) generic/src/debug/real_map.o 154 $(LD) -T arch/$(ARCH)/_link.ld $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) generic/src/debug/real_map.o -o $@ -Map kernel.map 99 155 100 156 %.o: %.S … … 106 162 %.o: %.c 107 163 $(CC) $(CFLAGS) -c $< -o $@ 108 109 KS=`cat kernel.bin | wc -c`110 111 boot:112 $(MAKE) -C arch/$(ARCH)/boot build KERNEL_SIZE=$(KS)
Note:
See TracChangeset
for help on using the changeset viewer.