1# 2# This file is part of the program psim. 3# 4# Copyright 1994, 1995, 1996, 1997, 2003 Andrew Cagney 5# 6# This program is free software; you can redistribute it and/or modify 7# it under the terms of the GNU General Public License as published by 8# the Free Software Foundation; either version 3 of the License, or 9# (at your option) any later version. 10# 11# This program is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# GNU General Public License for more details. 15# 16# You should have received a copy of the GNU General Public License 17# along with this program; if not, see <http://www.gnu.org/licenses/>. 18# 19 20default: all 21 22VPATH = @srcdir@ 23srcdir = @srcdir@ 24srccom = $(srcdir)/../common 25srcroot = $(srcdir)/../.. 26srcsim = $(srcdir)/.. 27 28include $(srcroot)/gdb/silent-rules.mk 29 30# Helper code from gnulib. 31GNULIB_PARENT_DIR = ../.. 32include $(GNULIB_PARENT_DIR)/gnulib/Makefile.gnulib.inc 33 34# Settings from top-level configure. 35include ../arch-subdir.mk 36 37prefix = @prefix@ 38exec_prefix = @exec_prefix@ 39 40datarootdir = @datarootdir@ 41datadir = @datadir@ 42mandir = @mandir@ 43man1dir = $(mandir)/man1 44man2dir = $(mandir)/man2 45man3dir = $(mandir)/man3 46man4dir = $(mandir)/man4 47man5dir = $(mandir)/man5 48man6dir = $(mandir)/man6 49man7dir = $(mandir)/man7 50man8dir = $(mandir)/man8 51man9dir = $(mandir)/man9 52infodir = @infodir@ 53includedir = @includedir@ 54 55# This can be referenced by the gettext configuration code. 56top_builddir = .. 57 58SHELL = /bin/sh 59 60BISON = bison 61MAKEINFO = makeinfo 62 63INLINE_CFLAGS = $(SIM_INLINE) 64SMP_CFLAGS = @sim_smp@ 65XOR_ENDIAN_CFLAGS = @sim_xor_endian@ 66BITSIZE_CFLAGS = @sim_bitsize@ 67HOSTBITSIZE_CFLAGS = @sim_hostbitsize@ 68TIMEBASE_CFLAGS = @sim_timebase@ 69FLOAT_CFLAGS = @sim_float@ 70MONITOR_CFLAGS = @sim_monitor@ 71MODEL_CFLAGS = @sim_model@ @sim_default_model@ @sim_model_issue@ 72TERMIO_CFLAGS = @sim_termio@ 73CONFIG_CFLAGS = \ 74 $(SMP_CFLAGS) \ 75 $(XOR_ENDIAN_CFLAGS) \ 76 $(BITSIZE_CFLAGS) \ 77 $(HOSTBITSIZE_CFLAGS) \ 78 $(TIMEBASE_CFLAGS) \ 79 $(FLOAT_CFLAGS) \ 80 $(MONITOR_CFLAGS) \ 81 $(MODEL_CFLAGS) \ 82 $(TERMIO_CFLAGS) 83SIM_FPU_CFLAGS = -DHAVE_COMMON_FPU -I../common -I${srcdir}/../common 84 85STD_CFLAGS = $(CFLAGS) $(WERROR_CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(INCGNU) $(SIM_FPU_CFLAGS) 86NOWARN_CFLAGS = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(INCLUDES) $(SIM_FPU_CFLAGS) 87BUILD_CFLAGS = $(CFLAGS_FOR_BUILD) $(INCLUDES) $(WARN_CFLAGS) 88 89LIBS = $(COMMON_LIBS) @LIBS@ $(LIBGNU) $(LIBGNU_EXTRA_LIBS) 90 91COMPILE_FOR_BUILD = $(CC_FOR_BUILD) $(BUILD_CFLAGS) 92LINK_FOR_BUILD = $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(LDFLAGS_FOR_BUILD) -o $@ 93 94IGEN_OPCODE_RULES = @sim_opcode@ 95IGEN_DECODE_MECHANISM = @sim_decode_mechanism@ 96IGEN_DUPLICATE = @sim_dup@ 97IGEN_JUMP = @sim_jump@ 98IGEN_FILTER = @sim_filter@ 99IGEN_ICACHE = @sim_icache@ 100IGEN_SMP = @sim_igen_smp@ 101IGEN_LINE_NR = @sim_line_nr@ 102DGEN_FLAGS = @sim_switch@ 103 104IGEN_FLAGS = \ 105 $(IGEN_DECODE_MECHANISM) \ 106 $(IGEN_DUPLICATE) \ 107 $(IGEN_JUMP) \ 108 $(IGEN_FILTER) \ 109 $(IGEN_ICACHE) \ 110 $(IGEN_SMP) \ 111 $(IGEN_LINE_NR) 112 113# igen/dgen leak memory, and therefore makes AddressSanitizer unhappy. Disable 114# leak detection while running them. 115 116IGEN = ASAN_OPTIONS=detect_leaks=0 ./igen 117DGEN = ASAN_OPTIONS=detect_leaks=0 ./dgen 118 119.NOEXPORT: 120MAKEOVERRIDES= 121 122LIB_INCLUDES = -I$(srcdir)/../../include 123BFD_INCLUDES = -I../../bfd -I$(srcdir)/../../bfd 124GDB_INCLUDES = -I../../gdb -I$(srcdir)/../../gdb -I$(srcdir)/../../gdb/config 125 126INCLUDES = -I. -I$(srcdir) $(LIB_INCLUDES) $(BFD_INCLUDES) $(GDB_INCLUDES) -I../.. 127 128LIBIBERTY_LIB = ../../libiberty/libiberty.a 129BFD_LIB = ../../bfd/libbfd.la 130 131 132TARGETLIB = libsim.a 133 134all: main.o $(TARGETLIB) $(GDB_OBJ) 135 136.c.o: 137 $(ECHO_CC) $(CC) -c $(STD_CFLAGS) $< 138 139 140# Headers outside sim/ppc. 141ANSIDECL_H = $(srcroot)/include/ansidecl.h 142BFD_H = ../../bfd/bfd.h 143GDB_CALLBACK_H = $(srcroot)/include/sim/callback.h 144GDB_REMOTE_SIM_H = $(srcroot)/include/sim/sim.h 145GDB_SIM_PPC_H = $(srcroot)/include/gdb/sim-ppc.h 146COMMON_SIM_BASE_H = $(srcroot)/sim/common/sim-base.h 147COMMON_SIM_BASICS_H = $(srcroot)/sim/common/sim-basics.h 148COMMON_SIM_FPU_H = $(srcroot)/sim/common/sim-fpu.h 149COMMON_SIM_INLINE_H = $(srcroot)/sim/common/sim-inline.h 150COMMON_SIM_SIGNAL_H = $(srcroot)/sim/common/sim-signal.h 151 152# Headers in sim/ppc. 153ACCONFIG_H = \ 154 acconfig.h 155 156ALTIVEC_EXPRESSION_H = \ 157 altivec_expression.h 158 159ALTIVEC_REGISTERS_H = \ 160 altivec_registers.h 161 162BASICS_H = \ 163 basics.h \ 164 $(CONFIG_H) \ 165 $(INLINE_H) \ 166 $(SIM_CALLBACKS_H) \ 167 $(DEBUG_H) \ 168 $(WORDS_H) \ 169 $(BITS_H) \ 170 $(SIM_ENDIAN_H) 171 172BITS_H = \ 173 bits.h \ 174 bits.c 175 176CAP_H = \ 177 cap.h \ 178 $(BASICS_H) 179 180COREFILE_H = \ 181 corefile.h 182 183COREFILE_N_H = \ 184 corefile-n.h 185 186CPU_H = \ 187 cpu.h \ 188 $(BASICS_H) \ 189 $(REGISTERS_H) \ 190 $(DEVICE_H) \ 191 $(COREFILE_H) \ 192 $(VM_H) \ 193 $(EVENTS_H) \ 194 $(INTERRUPTS_H) \ 195 $(PSIM_H) \ 196 $(IDECODE_H) \ 197 $(ITABLE_H) \ 198 $(OS_EMUL_H) \ 199 $(MON_H) \ 200 $(MODEL_H) \ 201 cpu.c 202 203DEBUG_H = \ 204 debug.h \ 205 $(FILTER_FILENAME_H) 206 207DEVICE_H = \ 208 device.h 209 210DEVICE_TABLE_H = \ 211 device_table.h \ 212 $(BASICS_H) \ 213 $(DEVICE_H) \ 214 $(TREE_H) \ 215 $(HW_H) 216 217E500_EXPRESSION_H = \ 218 e500_expression.h 219 220E500_REGISTERS_H = \ 221 e500_registers.h 222 223EMUL_BUGAPI_H = \ 224 emul_bugapi.h 225 226EMUL_CHIRP_H = \ 227 emul_chirp.h 228 229EMUL_GENERIC_H = \ 230 emul_generic.h \ 231 $(CPU_H) \ 232 $(IDECODE_H) \ 233 $(OS_EMUL_H) \ 234 $(TREE_H) \ 235 $(BFD_H) 236 237EMUL_NETBSD_H = \ 238 emul_netbsd.h 239 240EMUL_UNIX_H = \ 241 emul_unix.h 242 243EVENTS_H = \ 244 events.h 245 246FILTER_FILENAME_H = \ 247 filter_filename.h 248 249FILTER_H = \ 250 filter.h 251 252GEN_ICACHE_H = \ 253 gen-icache.h 254 255GEN_IDECODE_H = \ 256 gen-idecode.h 257 258GEN_ITABLE_H = \ 259 gen-itable.h 260 261GEN_MODEL_H = \ 262 gen-model.h 263 264GEN_SEMANTICS_H = \ 265 gen-semantics.h 266 267GEN_SUPPORT_H = \ 268 gen-support.h 269 270HW_CPU_H = \ 271 hw_cpu.h 272 273HW_PHB_H = \ 274 hw_phb.h 275 276IDECODE_BRANCH_H = \ 277 idecode_branch.h 278 279IDECODE_EXPRESSION_H = \ 280 idecode_expression.h \ 281 $(ALTIVEC_EXPRESSION_H) \ 282 $(E500_EXPRESSION_H) 283 284IDECODE_FIELDS_H = \ 285 idecode_fields.h 286 287IGEN_H = \ 288 igen.h 289 290INLINE_H = \ 291 inline.h 292 293INTERRUPTS_H = \ 294 interrupts.h 295 296LD_CACHE_H = \ 297 ld-cache.h 298 299LD_DECODE_H = \ 300 ld-decode.h 301 302LD_INSN_H = \ 303 ld-insn.h 304 305LF_H = \ 306 lf.h 307 308MISC_H = \ 309 misc.h \ 310 $(CONFIG_H) \ 311 $(FILTER_FILENAME_H) 312 313MON_H = \ 314 mon.h \ 315 $(BASICS_H) \ 316 $(ITABLE_H) 317 318OPTIONS_H = \ 319 options.h 320 321OS_EMUL_H = \ 322 os_emul.h 323 324PSIM_H = \ 325 psim.h \ 326 $(BASICS_H) 327 328REGISTERS_H = \ 329 registers.h \ 330 $(E500_REGISTERS_H) \ 331 $(ALTIVEC_REGISTERS_H) \ 332 $(SPREG_H) 333 334SIM_CALLBACKS_H = \ 335 sim_callbacks.h 336 337SIM_ENDIAN_H = \ 338 sim-endian.h \ 339 sim-endian.c 340 341SIM_ENDIAN_N_H = \ 342 sim-endian-n.h 343 344SIM_MAIN_H = \ 345 sim-main.h \ 346 $(COMMON_SIM_BASICS_H) \ 347 $(COMMON_SIM_SIGNAL_H) \ 348 $(COMMON_SIM_BASE_H) 349 350STD_CONFIG_H = \ 351 std-config.h 352 353TABLE_H = \ 354 table.h 355 356TREE_H = \ 357 tree.h 358 359VM_H = \ 360 vm.h 361 362VM_N_H = \ 363 vm_n.h 364 365WORDS_H = \ 366 words.h 367 368 369# Generated headers. 370CONFIG_H = \ 371 config.h 372 373DEFINES_H = \ 374 defines.h 375 376HW_H = \ 377 hw.h 378 379ICACHE_H = \ 380 icache.h 381 382IDECODE_H = \ 383 idecode.h \ 384 $(IDECODE_EXPRESSION_H) \ 385 $(IDECODE_FIELDS_H) \ 386 $(IDECODE_BRANCH_H) 387 388ITABLE_H = \ 389 itable.h 390 391MODEL_H = \ 392 model.h 393 394PK_H = \ 395 pk.h 396 397SEMANTICS_H = \ 398 semantics.h 399 400SPREG_H = \ 401 spreg.h 402 403SUPPORT_H = \ 404 support.h \ 405 support.c 406 407INLINE = \ 408 inline.h \ 409 inline.c 410 411BUILT_SRC_WO_CONFIG = \ 412 icache.h icache.c \ 413 support.h support.c \ 414 idecode.h idecode.c \ 415 semantics.h semantics.c \ 416 itable.h itable.c \ 417 spreg.h spreg.c \ 418 model.h model.c \ 419 support.h support.c \ 420 pk.h \ 421 hw.h hw.c \ 422 filter_host.c 423 424BUILT_SRC = \ 425 $(BUILT_SRC_WO_CONFIG) \ 426 config.h 427 428LIB_INLINE_SRC = \ 429 psim.c \ 430 bits.c \ 431 debug.c \ 432 sim-endian.c \ 433 sim-endian.h \ 434 sim-endian-n.h \ 435 vm.c \ 436 vm_n.h \ 437 corefile.c \ 438 events.c \ 439 os_emul.c \ 440 registers.c \ 441 cpu.c \ 442 interrupts.c \ 443 device.c \ 444 tree.c \ 445 device_table.c \ 446 cap.c \ 447 mon.c \ 448 options.c 449 450LIB_SRC = \ 451 $(PACKAGE_SRC) \ 452 $(HW_SRC) \ 453 $(LIB_INLINE_SRC) 454 455MAIN_SRC = \ 456 main.c \ 457 gdb-sim.c \ 458 sim_calls.c 459 460COMMON_OBJS_NAMES = \ 461 callback.o \ 462 target-newlib-errno.o \ 463 target-newlib-open.o \ 464 target-newlib-signal.o \ 465 target-newlib-syscall.o \ 466 version.o 467COMMON_OBJS = $(COMMON_OBJS_NAMES:%=../common/%) 468 469# NOTE: semantics, idecode and psim put last so smaller files are compiled 470# first 471LIB_OBJ = \ 472 debug.o \ 473 filter_filename.o \ 474 bits.o \ 475 sim-endian.o \ 476 os_emul.o \ 477 emul_generic.o \ 478 emul_bugapi.o \ 479 emul_chirp.o \ 480 emul_netbsd.o \ 481 emul_unix.o \ 482 registers.o \ 483 vm.o \ 484 corefile.o \ 485 model.o \ 486 spreg.o \ 487 cpu.o \ 488 interrupts.o \ 489 events.o \ 490 cap.o \ 491 device.o \ 492 tree.o \ 493 device_table.o \ 494 itable.o \ 495 mon.o \ 496 icache.o \ 497 semantics.o \ 498 idecode.o \ 499 support.o \ 500 sim-fpu.o \ 501 psim.o \ 502 $(COMMON_OBJS) \ 503 $(PACKAGE_OBJ) \ 504 $(HW_OBJ) \ 505 options.o 506 507 508GDB_OBJ = gdb-sim.o sim_calls.o 509 510HW_SRC = @sim_hw_src@ 511HW_OBJ = @sim_hw_obj@ 512 513PACKAGE_SRC = pk_disklabel.c 514PACKAGE_OBJ = $(PACKAGE_SRC:.c=.o) 515 516 517$(TARGETLIB): tmp-igen tmp-dgen tmp-hw tmp-defines $(LIB_OBJ) $(GDB_OBJ) 518 $(ECHO_AR) $(AR) $(AR_FLAGS) $(TARGETLIB) $(LIB_OBJ) $(GDB_OBJ) 519 $(ECHO_RANLIB) $(RANLIB) $(TARGETLIB) 520 521psim.o: psim.c $(CPU_H) $(IDECODE_H) $(OPTIONS_H) $(TREE_H) $(BFD_H) 522 523bits.o: bits.c $(BASICS_H) 524 525debug.o: debug.c $(CONFIG_H) $(BASICS_H) 526filter_filename.o: filter_filename.c $(CONFIG_H) $(FILTER_FILENAME_H) 527 528sim-endian.o: sim-endian.c $(CONFIG_H) $(BASICS_H) $(SIM_ENDIAN_N_H) 529 530os_emul.o: os_emul.c $(CPU_H) $(IDECODE_H) $(OS_EMUL_H) $(EMUL_GENERIC_H) $(EMUL_NETBSD_H) $(EMUL_UNIX_H) $(EMUL_CHIRP_H) $(EMUL_BUGAPI_H) 531emul_generic.o: emul_generic.c $(EMUL_GENERIC_H) 532 533emul_bugapi.o: emul_bugapi.c $(EMUL_GENERIC_H) $(EMUL_BUGAPI_H) 534emul_chirp.o: emul_chirp.c $(EMUL_GENERIC_H) $(EMUL_CHIRP_H) 535emul_netbsd.o: emul_netbsd.c $(EMUL_GENERIC_H) $(EMUL_NETBSD_H) 536emul_unix.o: emul_unix.c $(EMUL_GENERIC_H) $(EMUL_UNIX_H) 537 538registers.o: registers.c $(BASICS_H) $(REGISTERS_H) 539 540cpu.o: cpu.c $(CPU_H) $(IDECODE_H) 541 542interrupts.o: interrupts.c $(CPU_H) $(IDECODE_H) $(OS_EMUL_H) 543 544# Given that inlines are turned on now, rebuild idecode whenever 545# anything changes. 546idecode.o: idecode.c $(CPU_H) $(IDECODE_H) $(SEMANTICS_H) $(LIB_INLINE_SRC) $(BUILT_SRC) 547 548# double.o: double.c dp-bit.c 549 550vm.o: vm.c $(BASICS_H) $(REGISTERS_H) $(DEVICE_H) $(COREFILE_H) $(VM_H) $(INTERRUPTS_H) $(MON_H) $(CPU_H) $(VM_N_H) 551 552corefile.o: corefile.c $(BASICS_H) $(DEVICE_TABLE_H) $(COREFILE_H) $(COREFILE_N_H) 553 554model.o: model.c $(CPU_H) $(MON_H) 555 556events.o: events.c $(BASICS_H) $(EVENTS_H) 557 558sim_calls.o: sim_calls.c $(PSIM_H) $(OPTIONS_H) $(DEFS_H) $(BFD_H) $(GDB_CALLBACK_H) $(GDB_REMOTE_SIM_H) 559 560gdb-sim.o: gdb-sim.c $(PSIM_H) $(OPTIONS_H) $(REGISTERS_H) $(GDB_REMOTE_SIM_H) $(GDB_SIM_PPC_H) $(SIM_CALLBACK_H) 561 562spreg.o: spreg.c $(BASICS_H) $(SPREG_H) 563 564main.o: main.c $(PSIM_H) $(OPTIONS_H) $(DEVICE_H) $(EVENTS_H) $(BFD_H) $(GDB_CALLBACK_H) $(GDB_REMOTE_SIM_H) 565 566device.o: device.c $(DEVICE_TABLE_H) $(CAP_H) $(EVENTS_H) $(PSIM_H) 567 568tree.o: tree.c $(BASICS_H) $(DEVICE_H) $(TREE_H) 569 570device_table.o: device_table.c $(DEVICE_TABLE_H) hw.c 571 572cap.o: cap.c $(CAP_H) 573 574semantics.o: semantics.c $(CPU_H) $(IDECODE_H) $(SEMANTICS_H) $(COMMON_SIM_INLINE_H) $(COMMON_SIM_FPU_H) $(SUPPORT_H) 575 576icache.o: icache.c $(CPU_H) $(IDECODE_H) $(SEMANTICS_H) $(ICACHE_H) $(COMMON_SIM_INLINE_H) $(COMMON_SIM_FPU_H) $(SUPPORT_H) 577 578support.o: support.c $(CPU_H) $(IDECODE_H) $(COMMON_SIM_INLINE_H) $(COMMON_SIM_FPU_H) $(SUPPORT_H) 579 580itable.o: itable.c $(ITABLE_H) 581 582mon.o: mon.c $(BASICS_H) $(CPU_H) $(MON_H) 583 584sim-fpu.o: $(srcdir)/../common/sim-fpu.c $(CONFIG_H) 585 $(ECHO_CC) $(CC) -c $(STD_CFLAGS) -DHAVE_CONFIG_H $(srcdir)/../common/sim-fpu.c 586 587# Rebuild options whenever something changes so the date/time is up to date. 588options.o: options.c $(CPU_H) $(OPTIONS_H) $(DEFINES_H) $(BASICS_H) $(IDECODE_H) $(INLINE) $(LIB_SRC) $(BUILT_SRC) config.status Makefile 589 $(ECHO_CC) $(CC) -c $(STD_CFLAGS) '-DOPCODE_RULES="@sim_opcode@"' '-DIGEN_FLAGS="$(IGEN_FLAGS)"' '-DDGEN_FLAGS="$(DGEN_FLAGS)"' $(srcdir)/options.c 590 591defines.h: tmp-defines; @true 592tmp-defines: config.h Makefile 593 $(ECHO_GEN) sed -n -e '/^#define HAVE_/s/ 1$$/",/' -e '/^#define HAVE_/s//"HAVE_/p' < config.h > tmp-defines.h 594 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-defines.h defines.h 595 $(SILENCE) touch $@ 596 597# 598# Rules to create the built c source code files 599# 600 601tmp-dgen: dgen ppc-spr-table $(srcroot)/move-if-change 602 $(ECHO_GEN) $(DGEN) $(DGEN_FLAGS) \ 603 -r $(srcdir)/ppc-spr-table \ 604 -n spreg.h -hp tmp-spreg.h \ 605 -n spreg.c -p tmp-spreg.c 606 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-spreg.h spreg.h 607 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-spreg.c spreg.c 608 $(SILENCE) touch $@ 609 610tmp-igen: igen $(srcdir)/powerpc.igen $(srcdir)/altivec.igen $(srcdir)/e500.igen $(IGEN_OPCODE_RULES) $(srcroot)/move-if-change 611 $(ECHO_GEN) $(IGEN) $(IGEN_FLAGS) \ 612 -o $(srcdir)/$(IGEN_OPCODE_RULES) \ 613 -I $(srcdir) -i $(srcdir)/powerpc.igen \ 614 -n icache.h -hc tmp-icache.h \ 615 -n icache.c -c tmp-icache.c \ 616 -n semantics.h -hs tmp-semantics.h \ 617 -n semantics.c -s tmp-semantics.c \ 618 -n idecode.h -hd tmp-idecode.h \ 619 -n idecode.c -d tmp-idecode.c \ 620 -n itable.h -ht tmp-itable.h \ 621 -n itable.c -t tmp-itable.c \ 622 -n model.h -hm tmp-model.h \ 623 -n model.c -m tmp-model.c \ 624 -n support.h -hf tmp-support.h \ 625 -n support.c -f tmp-support.c 626 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.h icache.h 627 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-icache.c icache.c 628 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.h idecode.h 629 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-idecode.c idecode.c 630 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.h semantics.h 631 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-semantics.c semantics.c 632 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-itable.h itable.h 633 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-itable.c itable.c 634 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.h model.h 635 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-model.c model.c 636 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.h support.h 637 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-support.c support.c 638 $(SILENCE) touch $@ 639 640# NOTE: Some versions of make don't handle files created as side-effects 641# uncomment the below if that is the case. 642 643$(TARGETLIB): tmp-igen tmp-dgen 644itable.h itable.c icache.h icache.c idecode.h idecode.c semantics.h semantics.c model.h model.c support.h support.c: tmp-igen 645spreg.h spreg.c: tmp-dgen 646 647dgen: dgen.o table.o lf.o misc.o filter_host.o 648 $(ECHO_CCLD) $(LINK_FOR_BUILD) dgen.o table.o lf.o misc.o filter_host.o 649 650igen: igen.o table.o lf.o misc.o filter_host.o ld-decode.o ld-cache.o filter.o ld-insn.o gen-model.o gen-itable.o gen-icache.o gen-semantics.o gen-idecode.o gen-support.o 651 $(ECHO_CCLD) $(LINK_FOR_BUILD) igen.o table.o lf.o misc.o filter_host.o ld-decode.o ld-cache.o filter.o ld-insn.o gen-model.o gen-itable.o gen-icache.o gen-semantics.o gen-idecode.o gen-support.o 652 653filter_host.c: filter_filename.c 654 $(ECHO_GEN) cat $(srcdir)/filter_filename.c > filter_host.c 655 656filter_host.o: filter_host.c $(CONFIG_H) $(FILTER_FILENAME_H) 657 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c filter_host.c 658 659table.o: table.c $(CONFIG_H) $(MISC_H) $(LF_H) $(TABLE_H) 660 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/table.c 661 662lf.o: lf.c $(CONFIG_H) $(MISC_H) $(LF_H) 663 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/lf.c 664 665filter.o: filter.c $(CONFIG_H) $(MISC_H) $(FILTER_H) 666 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/filter.c 667tmp-filter: filter.c $(MISC_H) misc.o 668 $(ECHO_CCLD) $(LINK_FOR_BUILD) -DMAIN $(srcdir)/filter.c misc.o 669 670ld-decode.o: ld-decode.c $(MISC_H) $(LF_H) $(TABLE_H) $(LD_DECODE_H) 671 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/ld-decode.c 672tmp-ld-decode: ld-decode.c misc.o lf.o table.o filter_host.o 673 $(ECHO_CCLD) $(LINK_FOR_BUILD) -DMAIN $(srcdir)/ld-decode.c misc.o lf.o table.o filter_host.o 674 675ld-cache.o: ld-cache.c $(MISC_H) $(LF_H) $(TABLE_H) $(LD_CACHE_H) 676 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/ld-cache.c 677tmp-ld-cache: ld-cache.c misc.o lf.o table.o filter_host.o 678 $(ECHO_CCLD) $(LINK_FOR_BUILD) -DMAIN $(srcdir)/ld-cache.c misc.o lf.o table.o filter_host.o 679 680ld-insn.o: ld-insn.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) 681 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/ld-insn.c 682tmp-ld-insn: ld-insn.c ld-cache.o misc.o lf.o table.o ld-decode.o filter_host.o filter.o 683 $(ECHO_CCLD) $(LINK_FOR_BUILD) -DMAIN $(srcdir)/ld-insn.c ld-cache.o misc.o lf.o table.o ld-decode.o filter_host.o filter.o 684 685gen-model.o: gen-model.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_CACHE_H) $(LD_DECODE_H) $(LD_INSN_H) $(GEN_MODEL_H) 686 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-model.c 687 688gen-itable.o: gen-itable.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_CACHE_H) $(LD_DECODE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_ITABLE_H) 689 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-itable.c 690 691gen-icache.o: gen-icache.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_SEMANTICS_H) $(GEN_IDECODE_H) $(GEN_ICACHE_H) 692 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-icache.c 693 694gen-semantics.o: gen-semantics.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_SEMANTICS_H) $(GEN_ICACHE_H) $(GEN_IDECODE_H) 695 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-semantics.c 696 697gen-idecode.o: gen-idecode.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_IDECODE_H) $(GEN_ICACHE_H) $(GEN_SEMANTICS_H) 698 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-idecode.c 699 700gen-support.o: gen-support.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_SEMANTICS_H) $(GEN_SUPPORT_H) 701 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-support.c 702 703dgen.o: dgen.c $(CONFIG_H) $(MISC_H) $(LF_H) $(TABLE_H) 704 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/dgen.c 705 706igen.o: igen.c $(MISC_H) $(LF_H) $(TABLE_H) $(CONFIG_H) $(FILTER_H) $(LD_CACHE_H) $(LD_DECODE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_MODEL_H) $(GEN_ICACHE_H) $(GEN_ITABLE_H) $(GEN_IDECODE_H) $(GEN_SEMANTICS_H) $(GEN_SUPPORT_H) 707 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/igen.c 708 709misc.o: misc.c $(CONFIG_H) $(MISC_H) 710 $(ECHO_CC) $(COMPILE_FOR_BUILD) -c $(srcdir)/misc.c 711 712 713 714# real hardware 715hw.c hw.h: tmp-hw; @true 716tmp-hw: Makefile $(HW_SRC) $(srcroot)/move-if-change 717 $(ECHO_GEN)# The first for loop is to remove duplicates. 718 $(SILENCE) f=""; \ 719 for i in $(HW_SRC) ; do \ 720 case " $$f " in \ 721 *" $$i "*) ;; \ 722 *) f="$$f $$i" ;; \ 723 esac ; \ 724 done ; \ 725 for hw in $$f ; do echo $$hw ; done \ 726 | sed -e 's/^.*\(hw_.*\)\.c/\1/' \ 727 -e 's/^/extern const device_descriptor /' \ 728 -e 's/$$/_device_descriptor\[\];/' \ 729 > tmp-hw.h 730 $(SILENCE) f=""; \ 731 for i in $(HW_SRC) ; do \ 732 case " $$f " in \ 733 *" $$i "*) ;; \ 734 *) f="$$f $$i" ;; \ 735 esac ; \ 736 done ; \ 737 for hw in $$f ; do echo $$hw ; done \ 738 | sed -e 's/^.*\(hw_.*\)\.c/\1/' \ 739 -e 's/^/ /' \ 740 -e 's/$$/_device_descriptor,/' \ 741 > tmp-hw.c 742 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-hw.h hw.h 743 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-hw.c hw.c 744 $(SILENCE) touch $@ 745 746hw_cpu.o: hw_cpu.c $(DEVICE_TABLE_H) $(HW_CPU_H) $(INTERRUPTS_H) $(CPU_H) 747hw_com.o: hw_com.c $(DEVICE_TABLE_H) 748hw_core.o: hw_core.c $(DEVICE_TABLE_H) $(COREFILE_H) 749hw_disk.o: hw_disk.c $(DEVICE_TABLE_H) $(PK_H) 750hw_eeprom.o: hw_eeprom.c $(DEVICE_TABLE_H) 751hw_glue.o: hw_glue.c $(DEVICE_TABLE_H) 752hw_htab.o: hw_htab.c $(DEVICE_TABLE_H) $(BFD_H) 753hw_ide.o: hw_ide.c $(DEVICE_TABLE_H) 754hw_init.o: hw_init.c $(DEVICE_TABLE_H) $(BFD_H) $(PSIM_H) 755hw_iobus.o: hw_iobus.c $(DEVICE_TABLE_H) 756hw_memory.o: hw_memory.c $(DEVICE_TABLE_H) 757hw_nvram.o: hw_nvram.c $(DEVICE_TABLE_H) 758hw_opic.o: hw_opic.c $(DEVICE_TABLE_H) 759hw_pal.o: hw_pal.c $(DEVICE_TABLE_H) $(CPU_H) 760hw_phb.o: hw_phb.c $(DEVICE_TABLE_H) $(HW_PHB_H) $(COREFILE_H) 761hw_register.o: hw_register.c $(DEVICE_TABLE_H) $(PSIM_H) 762hw_sem.o: hw_sem.c $(DEVICE_TABLE_H) $(PSIM_H) 763hw_shm.o: hw_shm.c $(DEVICE_TABLE_H) $(PSIM_H) 764hw_trace.o: hw_trace.c $(DEVICE_TABLE_H) 765hw_vm.o: hw_vm.c $(DEVICE_TABLE_H) $(CPU_H) 766# ignore this line, it stops make from getting confused 767 768 769 770# real packages 771$(srcdir)/pk.h: $(MAINT) tmp-pk 772 @true 773tmp-pk: $(srcdir)/Makefile.in $(PACKAGE_SRC) $(srcroot)/move-if-change 774 $(ECHO_GEN)# The first for loop is to remove duplicates. 775 $(SILENCE) echo "/* Generated file by Makefile.in; do not edit. */" > tmp-pk.h; \ 776 f=""; \ 777 for i in $(PACKAGE_SRC) ; do \ 778 case " $$f " in \ 779 *" $$i "*) ;; \ 780 *) f="$$f $$i" ;; \ 781 esac ; \ 782 done ; \ 783 for pk in $$f ; do echo $$pk ; done \ 784 | sed -e 's/^.*pk_\(.*\)\.c/\1/' \ 785 -e 's/^/extern package_create_instance_callback pk_/' \ 786 -e 's/$$/_create_instance;/' \ 787 >> tmp-pk.h 788 $(SILENCE) $(SHELL) $(srcroot)/move-if-change tmp-pk.h $(srcdir)/pk.h 789 $(SILENCE) touch $@ 790 791pk_disklabel.o: pk_disklabel.c $(DEVICE_TABLE_H) $(PK_H) 792# ignore this line, it stops make from getting confused 793 794 795 796tags etags: TAGS 797 798TAGS: $(BUILT_SRC) 799 etags $(srcdir)/*.h $(srcdir)/*.c $(BUILT_SRC) 800 801clean mostlyclean: 802 rm -f tmp-* *.[oasi] core igen dgen $(BUILT_SRC_WO_CONFIG) 803 804distclean realclean: clean 805 rm -f TAGS Makefile config.cache config.status config.h defines.h stamp-h config.log 806 807maintainer-clean: distclean 808 rm -f *~ *.log core *.core 809 810Makefile: Makefile.in config.status 811 CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status 812 813config.h: stamp-h ; @true 814stamp-h: config.in config.status 815 CONFIG_FILES= CONFIG_HEADERS=config.h:config.in $(SHELL) ./config.status 816 817config.status: configure 818 $(SHELL) ./config.status --recheck 819 820check: 821 822html: 823clean-html: 824install-html: 825 826info: 827clean-info: 828install-info: 829 830pdf: 831clean-pdf: 832install-pdf: 833 834install: 835installdirs: 836uninstall: 837