| [e16e036a] | 1 | # | 
|---|
| [df4ed85] | 2 | # Copyright (c) 2005 Martin Decky | 
|---|
| [e16e036a] | 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 |  | 
|---|
| [4e9aaf5] | 29 | ## Configuration | 
|---|
|  | 30 | # | 
|---|
|  | 31 |  | 
|---|
|  | 32 | ROOT_PATH = .. | 
|---|
|  | 33 |  | 
|---|
|  | 34 | VERSION_DEF = $(ROOT_PATH)/version | 
|---|
|  | 35 |  | 
|---|
|  | 36 | COMMON_MAKEFILE = $(ROOT_PATH)/Makefile.common | 
|---|
|  | 37 | COMMON_HEADER = $(ROOT_PATH)/common.h | 
|---|
| [6ecf5b8] | 38 | COMMON_HEADER_ARCH = arch/$(KARCH)/include/arch/common.h | 
|---|
| [4e9aaf5] | 39 |  | 
|---|
|  | 40 | CONFIG_MAKEFILE = $(ROOT_PATH)/Makefile.config | 
|---|
|  | 41 | CONFIG_HEADER = $(ROOT_PATH)/config.h | 
|---|
|  | 42 |  | 
|---|
|  | 43 | -include $(VERSION_DEF) | 
|---|
|  | 44 | -include $(COMMON_MAKEFILE) | 
|---|
|  | 45 | -include $(CONFIG_MAKEFILE) | 
|---|
|  | 46 |  | 
|---|
|  | 47 | ## Common names | 
|---|
|  | 48 | # | 
|---|
|  | 49 |  | 
|---|
|  | 50 | DEPEND = Makefile.depend | 
|---|
|  | 51 | DEPEND_PREV = $(DEPEND).prev | 
|---|
|  | 52 | RAW = kernel.raw | 
|---|
|  | 53 | BIN = kernel.bin | 
|---|
|  | 54 | MAP = kernel.map | 
|---|
|  | 55 | JOB = kernel.job | 
|---|
|  | 56 | MAP_PREV = $(MAP).prev | 
|---|
|  | 57 | DISASM = kernel.disasm | 
|---|
|  | 58 | DUMP = kernel.dump | 
|---|
|  | 59 | REAL_MAP = generic/src/debug/real_map | 
|---|
|  | 60 |  | 
|---|
|  | 61 | GENMAP = tools/genmap.py | 
|---|
|  | 62 | JOBFILE = $(ROOT_PATH)/tools/jobfile.py | 
|---|
|  | 63 |  | 
|---|
|  | 64 | LINK = arch/$(KARCH)/_link.ld | 
|---|
|  | 65 | EMPTY_MAP = generic/src/debug/empty_map.o | 
|---|
|  | 66 | SIZEOK_MAP = generic/src/debug/sizeok_map.o | 
|---|
|  | 67 |  | 
|---|
| [cc1f8d4] | 68 | .PHONY: all clean | 
|---|
| [e16e036a] | 69 |  | 
|---|
| [4e9aaf5] | 70 | all: $(VERSION_DEF) $(COMMON_MAKEFILE) $(COMMON_HEADER) $(CONFIG_MAKEFILE) $(CONFIG_HEADER) $(BIN) $(DISASM) | 
|---|
|  | 71 | -[ -f $(DEPEND) ] && cp -a $(DEPEND) $(DEPEND_PREV) | 
|---|
| [c9ed176] | 72 |  | 
|---|
| [e16e036a] | 73 | clean: | 
|---|
| [6c5fc8e] | 74 | rm -f $(DEPEND) $(DEPEND_PREV) $(RAW) $(BIN) $(MAP) $(JOB) $(MAP_PREV) $(DISASM) $(DUMP) $(REAL_MAP).* arch/*/_link.ld arch/*/include/arch/common.h | 
|---|
| [839470f] | 75 | find generic/src/ arch/*/src/ genarch/src/ test/ -name '*.o' -follow -exec rm \{\} \; | 
|---|
| [4e9aaf5] | 76 |  | 
|---|
|  | 77 | ## Common compiler flags | 
|---|
|  | 78 | # | 
|---|
|  | 79 |  | 
|---|
| [6c5fc8e] | 80 | INCLUDES = generic/include genarch/include arch/$(KARCH)/include ../abi/include | 
|---|
| [6ecf5b8] | 81 | INCLUDES_FLAGS = $(addprefix -I,$(INCLUDES)) | 
|---|
| [1cb092d] | 82 |  | 
|---|
|  | 83 | ifeq ($(CONFIG_OPTIMIZE_FOR_SIZE),y) | 
|---|
| [938f227] | 84 | OPTIMIZATION = s | 
|---|
| [1cb092d] | 85 | else | 
|---|
| [f8d07859] | 86 | OPTIMIZATION = 3 | 
|---|
| [1cb092d] | 87 | endif | 
|---|
| [7c682dd1] | 88 |  | 
|---|
| [d9faae91] | 89 | DEFS = -DKERNEL -DRELEASE=$(RELEASE) "-DCOPYRIGHT=$(COPYRIGHT)" "-DNAME=$(NAME)" -D__$(BITS)_BITS__ -D__$(ENDIANESS)__ | 
|---|
| [4e9aaf5] | 90 |  | 
|---|
| [6ecf5b8] | 91 | GCC_CFLAGS = $(INCLUDES_FLAGS) -O$(OPTIMIZATION) -imacros $(CONFIG_HEADER) \ | 
|---|
| [4e9aaf5] | 92 | -fexec-charset=UTF-8 -fwide-exec-charset=UTF-32$(ENDIANESS) \ | 
|---|
|  | 93 | -finput-charset=UTF-8 -ffreestanding -fno-builtin -nostdlib -nostdinc \ | 
|---|
| [e8c5c11] | 94 | -std=gnu99 -Wall -Wextra -Wno-unused-parameter -Wmissing-prototypes \ | 
|---|
| [4e9aaf5] | 95 | -Werror-implicit-function-declaration -Wwrite-strings \ | 
|---|
| [e805e2f] | 96 | -pipe | 
|---|
| [4e9aaf5] | 97 |  | 
|---|
| [6ecf5b8] | 98 | ICC_CFLAGS = $(INCLUDES_FLAGS) -O$(OPTIMIZATION) -imacros $(CONFIG_HEADER) \ | 
|---|
| [4e9aaf5] | 99 | -ffreestanding -fno-builtin -nostdlib -nostdinc -Wall -Wmissing-prototypes \ | 
|---|
| [e805e2f] | 100 | -Werror-implicit-function-declaration -wd170 | 
|---|
| [4e9aaf5] | 101 |  | 
|---|
| [1570759b] | 102 | # clang does not support following options but I am not sure whether | 
|---|
|  | 103 | # something won't break because of that: | 
|---|
|  | 104 | # -fexec-charset=UTF-8 -fwide-exec-charset=UTF-32$(ENDIANESS) -finput-charset=UTF-8 | 
|---|
| [6ecf5b8] | 105 | CLANG_CFLAGS = $(INCLUDES_FLAGS) -O$(OPTIMIZATION) -imacros $(CONFIG_HEADER) \ | 
|---|
| [1570759b] | 106 | -ffreestanding -fno-builtin -nostdlib -nostdinc \ | 
|---|
| [550b4e0] | 107 | -Wall -Werror -Wextra -Wno-unused-parameter -Wmissing-prototypes \ | 
|---|
| [4e9aaf5] | 108 | -Werror-implicit-function-declaration -Wwrite-strings \ | 
|---|
| [b92a0ee] | 109 | -integrated-as \ | 
|---|
| [1570759b] | 110 | -pipe -target $(CLANG_TARGET) | 
|---|
| [4e9aaf5] | 111 |  | 
|---|
| [e805e2f] | 112 | ifeq ($(CONFIG_DEBUG),y) | 
|---|
|  | 113 | GCC_CFLAGS += -Werror | 
|---|
|  | 114 | ICC_CFLAGS += -Werror | 
|---|
|  | 115 | endif | 
|---|
|  | 116 |  | 
|---|
| [cf84f1bf] | 117 | ifeq ($(CONFIG_LTO),y) | 
|---|
|  | 118 | GCC_CFLAGS += -flto | 
|---|
|  | 119 | endif | 
|---|
|  | 120 |  | 
|---|
| [9ded977] | 121 | ifeq ($(CONFIG_LINE_DEBUG),y) | 
|---|
|  | 122 | GCC_CFLAGS += -g | 
|---|
|  | 123 | ICC_CFLAGS += -g | 
|---|
|  | 124 | CLANG_CFLAGS += -g | 
|---|
|  | 125 | endif | 
|---|
|  | 126 |  | 
|---|
| [510bc07] | 127 | # | 
|---|
|  | 128 | # Mind the mutual ordering with the inclusion of the arch Makefile.inc. | 
|---|
|  | 129 | # AFLAGS and LFLAGS must be initialized before the inclusion. | 
|---|
|  | 130 | # | 
|---|
|  | 131 | AFLAGS = | 
|---|
| [afdcc60e] | 132 | LFLAGS = -n -T $(LINK) -M | 
|---|
| [510bc07] | 133 |  | 
|---|
|  | 134 | # | 
|---|
|  | 135 | # Mind the mutual ordering with the initialization of AFLAGS and LFLAGS. | 
|---|
|  | 136 | # The arch Makefile.inc must be included after the initialization. | 
|---|
|  | 137 | # | 
|---|
| [4e9aaf5] | 138 | -include arch/$(KARCH)/Makefile.inc | 
|---|
|  | 139 | -include genarch/Makefile.inc | 
|---|
|  | 140 | -include $(DEPEND) | 
|---|
|  | 141 |  | 
|---|
|  | 142 | ## The at-sign | 
|---|
|  | 143 | # | 
|---|
|  | 144 | # The $(ATSIGN) variable holds the ASCII character representing the at-sign | 
|---|
|  | 145 | # ('@') used in various $(AS) constructs (e.g. @progbits). On architectures that | 
|---|
|  | 146 | # don't use '@' for starting a comment, $(ATSIGN) is merely '@'. However, on | 
|---|
|  | 147 | # those that do use it for starting a comment (e.g. arm32), $(ATSIGN) must be | 
|---|
|  | 148 | # defined as the percentile-sign ('%') in the architecture-dependent | 
|---|
|  | 149 | # Makefile.inc. | 
|---|
|  | 150 | # | 
|---|
|  | 151 |  | 
|---|
|  | 152 | ATSIGN ?= @ | 
|---|
|  | 153 |  | 
|---|
|  | 154 | ## Cross-platform assembly to start a symtab.data section | 
|---|
|  | 155 | # | 
|---|
|  | 156 |  | 
|---|
|  | 157 | SYMTAB_SECTION = ".section symtab.data, \"a\", $(ATSIGN)progbits;" | 
|---|
|  | 158 |  | 
|---|
|  | 159 | ## Compilation options | 
|---|
|  | 160 | # | 
|---|
|  | 161 |  | 
|---|
|  | 162 | ifeq ($(COMPILER),gcc_native) | 
|---|
|  | 163 | CFLAGS = $(GCC_CFLAGS) | 
|---|
|  | 164 | DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS) | 
|---|
| [263bda2] | 165 | INSTRUMENTATION = -finstrument-functions | 
|---|
| [4e9aaf5] | 166 | endif | 
|---|
|  | 167 |  | 
|---|
|  | 168 | ifeq ($(COMPILER),gcc_cross) | 
|---|
|  | 169 | CFLAGS = $(GCC_CFLAGS) | 
|---|
|  | 170 | DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS) | 
|---|
| [263bda2] | 171 | INSTRUMENTATION = -finstrument-functions | 
|---|
| [4e9aaf5] | 172 | endif | 
|---|
|  | 173 |  | 
|---|
| [8f2eca0] | 174 | ifeq ($(COMPILER),gcc_helenos) | 
|---|
|  | 175 | CFLAGS = $(GCC_CFLAGS) | 
|---|
|  | 176 | DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS) | 
|---|
|  | 177 | INSTRUMENTATION = -finstrument-functions | 
|---|
|  | 178 | endif | 
|---|
|  | 179 |  | 
|---|
| [4e9aaf5] | 180 | ifeq ($(COMPILER),icc) | 
|---|
|  | 181 | CFLAGS = $(ICC_CFLAGS) | 
|---|
|  | 182 | DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS) | 
|---|
| [263bda2] | 183 | INSTRUMENTATION = | 
|---|
| [4e9aaf5] | 184 | endif | 
|---|
|  | 185 |  | 
|---|
|  | 186 | ifeq ($(COMPILER),clang) | 
|---|
|  | 187 | CFLAGS = $(CLANG_CFLAGS) | 
|---|
|  | 188 | DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS) | 
|---|
| [263bda2] | 189 | INSTRUMENTATION = | 
|---|
| [4e9aaf5] | 190 | endif | 
|---|
|  | 191 |  | 
|---|
| [cf84f1bf] | 192 |  | 
|---|
| [4e9aaf5] | 193 | ## Generic kernel sources | 
|---|
|  | 194 | # | 
|---|
|  | 195 |  | 
|---|
|  | 196 | GENERIC_SOURCES = \ | 
|---|
|  | 197 | generic/src/adt/avl.c \ | 
|---|
|  | 198 | generic/src/adt/bitmap.c \ | 
|---|
|  | 199 | generic/src/adt/btree.c \ | 
|---|
|  | 200 | generic/src/adt/hash_table.c \ | 
|---|
|  | 201 | generic/src/adt/list.c \ | 
|---|
|  | 202 | generic/src/console/chardev.c \ | 
|---|
|  | 203 | generic/src/console/console.c \ | 
|---|
| [f0d7bd9] | 204 | generic/src/console/prompt.c \ | 
|---|
| [4e9aaf5] | 205 | generic/src/cpu/cpu.c \ | 
|---|
|  | 206 | generic/src/ddi/ddi.c \ | 
|---|
|  | 207 | generic/src/ddi/irq.c \ | 
|---|
|  | 208 | generic/src/ddi/device.c \ | 
|---|
|  | 209 | generic/src/debug/symtab.c \ | 
|---|
|  | 210 | generic/src/debug/stacktrace.c \ | 
|---|
| [06737a0] | 211 | generic/src/debug/panic.c \ | 
|---|
| [263bda2] | 212 | generic/src/debug/debug.c \ | 
|---|
| [4e9aaf5] | 213 | generic/src/interrupt/interrupt.c \ | 
|---|
|  | 214 | generic/src/main/main.c \ | 
|---|
|  | 215 | generic/src/main/kinit.c \ | 
|---|
|  | 216 | generic/src/main/uinit.c \ | 
|---|
|  | 217 | generic/src/main/version.c \ | 
|---|
|  | 218 | generic/src/main/shutdown.c \ | 
|---|
|  | 219 | generic/src/proc/program.c \ | 
|---|
|  | 220 | generic/src/proc/scheduler.c \ | 
|---|
|  | 221 | generic/src/proc/thread.c \ | 
|---|
|  | 222 | generic/src/proc/task.c \ | 
|---|
|  | 223 | generic/src/proc/the.c \ | 
|---|
|  | 224 | generic/src/syscall/syscall.c \ | 
|---|
|  | 225 | generic/src/syscall/copy.c \ | 
|---|
| [622f409] | 226 | generic/src/mm/km.c \ | 
|---|
| [630a8ef] | 227 | generic/src/mm/reserve.c \ | 
|---|
| [4e9aaf5] | 228 | generic/src/mm/buddy.c \ | 
|---|
|  | 229 | generic/src/mm/frame.c \ | 
|---|
|  | 230 | generic/src/mm/page.c \ | 
|---|
|  | 231 | generic/src/mm/tlb.c \ | 
|---|
|  | 232 | generic/src/mm/as.c \ | 
|---|
|  | 233 | generic/src/mm/backend_anon.c \ | 
|---|
|  | 234 | generic/src/mm/backend_elf.c \ | 
|---|
|  | 235 | generic/src/mm/backend_phys.c \ | 
|---|
|  | 236 | generic/src/mm/slab.c \ | 
|---|
|  | 237 | generic/src/lib/func.c \ | 
|---|
|  | 238 | generic/src/lib/memstr.c \ | 
|---|
| [3abfe9a8] | 239 | generic/src/lib/memfnc.c \ | 
|---|
| [4e9aaf5] | 240 | generic/src/lib/sort.c \ | 
|---|
| [19f857a] | 241 | generic/src/lib/str.c \ | 
|---|
| [4e9aaf5] | 242 | generic/src/lib/elf.c \ | 
|---|
| [9fe7d6c] | 243 | generic/src/lib/ra.c \ | 
|---|
| [4e9aaf5] | 244 | generic/src/lib/rd.c \ | 
|---|
|  | 245 | generic/src/printf/printf_core.c \ | 
|---|
|  | 246 | generic/src/printf/printf.c \ | 
|---|
|  | 247 | generic/src/printf/snprintf.c \ | 
|---|
|  | 248 | generic/src/printf/vprintf.c \ | 
|---|
|  | 249 | generic/src/printf/vsnprintf.c \ | 
|---|
|  | 250 | generic/src/time/clock.c \ | 
|---|
|  | 251 | generic/src/time/timeout.c \ | 
|---|
|  | 252 | generic/src/time/delay.c \ | 
|---|
|  | 253 | generic/src/preempt/preemption.c \ | 
|---|
|  | 254 | generic/src/synch/spinlock.c \ | 
|---|
|  | 255 | generic/src/synch/condvar.c \ | 
|---|
|  | 256 | generic/src/synch/mutex.c \ | 
|---|
|  | 257 | generic/src/synch/semaphore.c \ | 
|---|
|  | 258 | generic/src/synch/smc.c \ | 
|---|
|  | 259 | generic/src/synch/waitq.c \ | 
|---|
|  | 260 | generic/src/synch/futex.c \ | 
|---|
|  | 261 | generic/src/smp/ipi.c \ | 
|---|
|  | 262 | generic/src/smp/smp.c \ | 
|---|
|  | 263 | generic/src/ipc/ipc.c \ | 
|---|
|  | 264 | generic/src/ipc/sysipc.c \ | 
|---|
| [f0defd2] | 265 | generic/src/ipc/sysipc_ops.c \ | 
|---|
|  | 266 | generic/src/ipc/ops/clnestab.c \ | 
|---|
|  | 267 | generic/src/ipc/ops/conctmeto.c \ | 
|---|
|  | 268 | generic/src/ipc/ops/concttome.c \ | 
|---|
|  | 269 | generic/src/ipc/ops/connclone.c \ | 
|---|
|  | 270 | generic/src/ipc/ops/dataread.c \ | 
|---|
|  | 271 | generic/src/ipc/ops/datawrite.c \ | 
|---|
|  | 272 | generic/src/ipc/ops/debug.c \ | 
|---|
|  | 273 | generic/src/ipc/ops/sharein.c \ | 
|---|
|  | 274 | generic/src/ipc/ops/shareout.c \ | 
|---|
|  | 275 | generic/src/ipc/ops/stchngath.c \ | 
|---|
| [4e9aaf5] | 276 | generic/src/ipc/ipcrsc.c \ | 
|---|
|  | 277 | generic/src/ipc/irq.c \ | 
|---|
|  | 278 | generic/src/ipc/event.c \ | 
|---|
|  | 279 | generic/src/security/cap.c \ | 
|---|
| [18b5402c] | 280 | generic/src/sysinfo/sysinfo.c \ | 
|---|
| [9dae191e] | 281 | generic/src/sysinfo/stats.c | 
|---|
| [4e9aaf5] | 282 |  | 
|---|
|  | 283 | ## Kernel console support | 
|---|
|  | 284 | # | 
|---|
|  | 285 |  | 
|---|
|  | 286 | ifeq ($(CONFIG_KCONSOLE),y) | 
|---|
|  | 287 | GENERIC_SOURCES += \ | 
|---|
|  | 288 | generic/src/console/kconsole.c \ | 
|---|
|  | 289 | generic/src/console/cmd.c | 
|---|
|  | 290 | endif | 
|---|
|  | 291 |  | 
|---|
|  | 292 | ## Udebug interface sources | 
|---|
|  | 293 | # | 
|---|
|  | 294 |  | 
|---|
|  | 295 | ifeq ($(CONFIG_UDEBUG),y) | 
|---|
|  | 296 | GENERIC_SOURCES += \ | 
|---|
|  | 297 | generic/src/ipc/kbox.c \ | 
|---|
|  | 298 | generic/src/udebug/udebug.c \ | 
|---|
|  | 299 | generic/src/udebug/udebug_ops.c \ | 
|---|
|  | 300 | generic/src/udebug/udebug_ipc.c | 
|---|
|  | 301 | endif | 
|---|
|  | 302 |  | 
|---|
|  | 303 | ## Test sources | 
|---|
|  | 304 | # | 
|---|
|  | 305 |  | 
|---|
|  | 306 | ifeq ($(CONFIG_TEST),y) | 
|---|
|  | 307 | CFLAGS += -Itest/ | 
|---|
|  | 308 | GENERIC_SOURCES += \ | 
|---|
|  | 309 | test/test.c \ | 
|---|
|  | 310 | test/atomic/atomic1.c \ | 
|---|
|  | 311 | test/btree/btree1.c \ | 
|---|
|  | 312 | test/avltree/avltree1.c \ | 
|---|
|  | 313 | test/fault/fault1.c \ | 
|---|
|  | 314 | test/mm/falloc1.c \ | 
|---|
|  | 315 | test/mm/falloc2.c \ | 
|---|
|  | 316 | test/mm/mapping1.c \ | 
|---|
|  | 317 | test/mm/slab1.c \ | 
|---|
|  | 318 | test/mm/slab2.c \ | 
|---|
|  | 319 | test/synch/semaphore1.c \ | 
|---|
|  | 320 | test/synch/semaphore2.c \ | 
|---|
|  | 321 | test/print/print1.c \ | 
|---|
|  | 322 | test/print/print2.c \ | 
|---|
|  | 323 | test/print/print3.c \ | 
|---|
|  | 324 | test/print/print4.c \ | 
|---|
| [855e0d8] | 325 | test/print/print5.c \ | 
|---|
| [9528be02] | 326 | test/thread/thread1.c | 
|---|
| [4e9aaf5] | 327 |  | 
|---|
|  | 328 | ifeq ($(KARCH),mips32) | 
|---|
|  | 329 | GENERIC_SOURCES += test/debug/mips1.c | 
|---|
|  | 330 | else | 
|---|
|  | 331 | GENERIC_SOURCES += test/debug/mips1_skip.c | 
|---|
|  | 332 | endif | 
|---|
|  | 333 |  | 
|---|
|  | 334 | ifeq ($(KARCH),ia64) | 
|---|
|  | 335 | GENERIC_SOURCES += test/mm/purge1.c | 
|---|
|  | 336 | else | 
|---|
|  | 337 | GENERIC_SOURCES += test/mm/purge1_skip.c | 
|---|
|  | 338 | endif | 
|---|
|  | 339 |  | 
|---|
|  | 340 | endif | 
|---|
|  | 341 |  | 
|---|
| [263bda2] | 342 | ## Sources where instrumentation is enabled | 
|---|
|  | 343 | # | 
|---|
|  | 344 |  | 
|---|
| [da52547] | 345 | ifeq ($(CONFIG_TRACE),y) | 
|---|
| [7a0359b] | 346 | INSTRUMENTED_SOURCES = \ | 
|---|
|  | 347 | generic/src/adt/btree.c \ | 
|---|
|  | 348 | generic/src/cpu/cpu.c \ | 
|---|
|  | 349 | generic/src/ddi/ddi.c \ | 
|---|
|  | 350 | generic/src/interrupt/interrupt.c \ | 
|---|
|  | 351 | generic/src/main/main.c \ | 
|---|
|  | 352 | generic/src/main/kinit.c \ | 
|---|
|  | 353 | generic/src/proc/the.c \ | 
|---|
|  | 354 | generic/src/mm/frame.c \ | 
|---|
|  | 355 | generic/src/mm/page.c \ | 
|---|
|  | 356 | generic/src/mm/tlb.c \ | 
|---|
|  | 357 | generic/src/mm/as.c \ | 
|---|
|  | 358 | generic/src/mm/slab.c \ | 
|---|
|  | 359 | generic/src/sysinfo/sysinfo.c \ | 
|---|
|  | 360 | generic/src/console/kconsole.c | 
|---|
|  | 361 | else | 
|---|
|  | 362 | INSTRUMENTED_SOURCES = | 
|---|
| [263bda2] | 363 | endif | 
|---|
|  | 364 |  | 
|---|
| [4e9aaf5] | 365 | GENERIC_OBJECTS := $(addsuffix .o,$(basename $(GENERIC_SOURCES))) | 
|---|
|  | 366 | ARCH_OBJECTS := $(addsuffix .o,$(basename $(ARCH_SOURCES))) | 
|---|
|  | 367 | GENARCH_OBJECTS := $(addsuffix .o,$(basename $(GENARCH_SOURCES))) | 
|---|
|  | 368 |  | 
|---|
| [cf84f1bf] | 369 | LFLAGS_LTO := $(addprefix -Xlinker ,$(LFLAGS)) | 
|---|
|  | 370 |  | 
|---|
| [4e9aaf5] | 371 | ifeq ($(CONFIG_SYMTAB),y) | 
|---|
|  | 372 | SYMTAB_OBJECTS := generic/src/debug/real_map.o | 
|---|
|  | 373 | else | 
|---|
|  | 374 | SYMTAB_OBJECTS := | 
|---|
|  | 375 | endif | 
|---|
|  | 376 |  | 
|---|
|  | 377 | $(BIN): $(RAW) | 
|---|
|  | 378 | $(OBJCOPY) -O $(BFD) $< $@ | 
|---|
|  | 379 |  | 
|---|
|  | 380 | $(DISASM): $(RAW) | 
|---|
| [9ded977] | 381 | ifeq ($(CONFIG_LINE_DEBUG),y) | 
|---|
|  | 382 | $(OBJDUMP) -d -S $< > $@ | 
|---|
|  | 383 | else | 
|---|
| [4e9aaf5] | 384 | $(OBJDUMP) -d $< > $@ | 
|---|
| [9ded977] | 385 | endif | 
|---|
| [4e9aaf5] | 386 |  | 
|---|
|  | 387 | $(RAW): $(LINK) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(SYMTAB_OBJECTS) | 
|---|
| [cf84f1bf] | 388 | ifeq ($(CONFIG_LTO),y) | 
|---|
|  | 389 | $(GCC) $(LFLAGS_LTO) -Xlinker -Map -Xlinker $(MAP) $(DEFS) $(GCC_CFLAGS) -o $@ $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) $(SYMTAB_OBJECTS) | 
|---|
|  | 390 | else | 
|---|
|  | 391 | $(LD) $(LFLAGS) -Map $(MAP) -o $@ $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) $(SYMTAB_OBJECTS) | 
|---|
|  | 392 | endif | 
|---|
| [1cb092d] | 393 | ifeq ($(CONFIG_STRIP_BINARIES),y) | 
|---|
| [cf84f1bf] | 394 | $(STRIP) $(RAW) | 
|---|
| [1cb092d] | 395 | endif | 
|---|
| [4e9aaf5] | 396 |  | 
|---|
|  | 397 | $(LINK): $(LINK).in $(DEPEND) | 
|---|
| [1570759b] | 398 | $(CC) $(DEFS) $(CFLAGS) -D__ASM__ -D__LINKER__ -E -x c $< | grep -v "^\#" > $@ | 
|---|
| [4e9aaf5] | 399 |  | 
|---|
|  | 400 | %.o: %.S $(DEPEND) | 
|---|
| [cf84f1bf] | 401 | $(GCC) $(DEFS) $(GCC_CFLAGS) -D__ASM__ -c -o $@ $< | 
|---|
| [4e9aaf5] | 402 | ifeq ($(PRECHECK),y) | 
|---|
|  | 403 | $(JOBFILE) $(JOB) $< $@ as asm/preproc $(DEFS) $(GCC_CFLAGS) -D__ASM__ | 
|---|
|  | 404 | endif | 
|---|
|  | 405 |  | 
|---|
|  | 406 | %.o: %.s $(DEPEND) | 
|---|
| [7c682dd1] | 407 | $(AS) $(AFLAGS) -o $@ $< | 
|---|
| [4e9aaf5] | 408 | ifeq ($(PRECHECK),y) | 
|---|
|  | 409 | $(JOBFILE) $(JOB) $< $@ as asm $(DEFS) $(CFLAGS) $(EXTRA_FLAGS) | 
|---|
|  | 410 | endif | 
|---|
|  | 411 |  | 
|---|
|  | 412 | %.o: %.c $(DEPEND) | 
|---|
| [263bda2] | 413 | $(CC) $(DEFS) $(CFLAGS) $(EXTRA_FLAGS) $(FPU_NO_CFLAGS) $(if $(findstring $<,$(INSTRUMENTED_SOURCES)),$(INSTRUMENTATION)) -c -o $@ $< | 
|---|
| [4e9aaf5] | 414 | ifeq ($(PRECHECK),y) | 
|---|
|  | 415 | $(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS) $(EXTRA_FLAGS) $(FPU_NO_CFLAGS) | 
|---|
|  | 416 | endif | 
|---|
|  | 417 |  | 
|---|
|  | 418 | $(REAL_MAP).o: $(REAL_MAP).bin | 
|---|
|  | 419 | echo $(SYMTAB_SECTION)" .incbin \"$<\"" | $(AS) $(AFLAGS) -o $@ | 
|---|
|  | 420 |  | 
|---|
|  | 421 | $(REAL_MAP).bin: $(LINK) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) | 
|---|
|  | 422 | echo $(SYMTAB_SECTION) | $(AS) $(AFLAGS) -o $(EMPTY_MAP) | 
|---|
| [cf84f1bf] | 423 | ifeq ($(CONFIG_LTO),y) | 
|---|
|  | 424 | $(GCC) $(LFLAGS_LTO) -Xlinker -Map -Xlinker $(MAP_PREV) $(DEFS) $(GCC_CFLAGS) -o $@ $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) $(EMPTY_MAP) | 
|---|
|  | 425 | else | 
|---|
|  | 426 | $(LD) $(LFLAGS) -Map $(MAP_PREV) -o $@ $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) $(EMPTY_MAP) | 
|---|
|  | 427 | endif | 
|---|
| [4e9aaf5] | 428 | $(OBJDUMP) -t $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) > $(DUMP) | 
|---|
|  | 429 | $(GENMAP) $(MAP_PREV) $(DUMP) $@ | 
|---|
|  | 430 |  | 
|---|
|  | 431 | # Do it once again, this time to get correct even the symbols | 
|---|
|  | 432 | # on architectures that have bss after symtab | 
|---|
|  | 433 |  | 
|---|
|  | 434 | echo $(SYMTAB_SECTION)" .incbin \"$@\"" | $(AS) $(AFLAGS) -o $(SIZEOK_MAP) | 
|---|
| [cf84f1bf] | 435 | ifeq ($(CONFIG_LTO),y) | 
|---|
|  | 436 | $(GCC) $(LFLAGS_LTO) -Xlinker -Map -Xlinker $(MAP_PREV) $(DEFS) $(GCC_CFLAGS) -o $@ $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) $(SIZEOK_MAP) | 
|---|
|  | 437 | else | 
|---|
|  | 438 | $(LD) $(LFLAGS) -Map $(MAP_PREV) -o $@ $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) $(SIZEOK_MAP) | 
|---|
|  | 439 | endif | 
|---|
| [4e9aaf5] | 440 | $(OBJDUMP) -t $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) > $(DUMP) | 
|---|
|  | 441 | $(GENMAP) $(MAP_PREV) $(DUMP) $@ | 
|---|
|  | 442 |  | 
|---|
| [6c5fc8e] | 443 | $(DEPEND): $(COMMON_HEADER_ARCH) | 
|---|
| [4e9aaf5] | 444 | makedepend -f - -- $(DEPEND_DEFS) $(CFLAGS) -- $(ARCH_SOURCES) $(GENARCH_SOURCES) $(GENERIC_SOURCES) > $@ 2> /dev/null | 
|---|
|  | 445 | -[ -f $(DEPEND_PREV) ] && diff -q $(DEPEND_PREV) $@ && mv -f $(DEPEND_PREV) $@ | 
|---|
|  | 446 |  | 
|---|
|  | 447 | $(COMMON_HEADER_ARCH): $(COMMON_HEADER) | 
|---|
| [6ecf5b8] | 448 | ln -sfn ../../../../$< $@ | 
|---|