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