Commit 4fb240a4956fe222e8f65f0d915f8e07a409ee52
1 parent
6d5f237a
compile common code once
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3543 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
98 additions
and
55 deletions
Makefile
| ... | ... | @@ -11,7 +11,9 @@ BASE_LDFLAGS= |
| 11 | 11 | BASE_CFLAGS += $(OS_CFLAGS) $(ARCH_CFLAGS) |
| 12 | 12 | BASE_LDFLAGS += $(OS_LDFLAGS) $(ARCH_LDFLAGS) |
| 13 | 13 | |
| 14 | -CPPFLAGS += -I. -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE | |
| 14 | +CPPFLAGS += -I. -I$(SRC_PATH) -MMD -MP | |
| 15 | +CPPFLAGS += -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE | |
| 16 | +CPPFLAGS += -DQEMU_TOOL | |
| 15 | 17 | LIBS= |
| 16 | 18 | ifdef CONFIG_STATIC |
| 17 | 19 | BASE_LDFLAGS += -static |
| ... | ... | @@ -24,23 +26,100 @@ endif |
| 24 | 26 | |
| 25 | 27 | LIBS+=$(AIOLIBS) |
| 26 | 28 | |
| 27 | -all: $(TOOLS) $(DOCS) recurse-all | |
| 29 | +all: libqemu_common.a $(TOOLS) $(DOCS) recurse-all | |
| 28 | 30 | |
| 29 | 31 | subdir-%: dyngen$(EXESUF) |
| 30 | 32 | $(MAKE) -C $(subst subdir-,,$@) all |
| 31 | 33 | |
| 32 | 34 | recurse-all: $(patsubst %,subdir-%, $(TARGET_DIRS)) |
| 33 | 35 | |
| 34 | -qemu-img$(EXESUF): qemu-img.c cutils.c block.c block-raw.c block-cow.c block-qcow.c aes.c block-vmdk.c block-cloop.c block-dmg.c block-bochs.c block-vpc.c block-vvfat.c block-qcow2.c block-parallels.c | |
| 35 | - $(CC) -DQEMU_TOOL $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) $(LDFLAGS) $(BASE_LDFLAGS) -o $@ $^ -lz $(LIBS) | |
| 36 | +###################################################################### | |
| 37 | +# libqemu_common.a: target indepedent part of system emulation. The | |
| 38 | +# long term path is to suppress *all* target specific code in case of | |
| 39 | +# system emulation, i.e. a single QEMU executable should support all | |
| 40 | +# CPUs and machines. | |
| 36 | 41 | |
| 42 | +OBJS+=cutils.o readline.o console.o | |
| 43 | +#OBJS+=block.o block-raw.o | |
| 44 | +OBJS+=block-cow.o block-qcow.o aes.o block-vmdk.o block-cloop.o block-dmg.o block-bochs.o block-vpc.o block-vvfat.o block-qcow2.o block-parallels.o | |
| 45 | + | |
| 46 | +ifdef CONFIG_WIN32 | |
| 47 | +OBJS+=tap-win32.o | |
| 48 | +endif | |
| 49 | + | |
| 50 | +AUDIO_OBJS = audio.o noaudio.o wavaudio.o mixeng.o | |
| 51 | +ifdef CONFIG_SDL | |
| 52 | +AUDIO_OBJS += sdlaudio.o | |
| 53 | +endif | |
| 54 | +ifdef CONFIG_OSS | |
| 55 | +AUDIO_OBJS += ossaudio.o | |
| 56 | +endif | |
| 57 | +ifdef CONFIG_COREAUDIO | |
| 58 | +AUDIO_OBJS += coreaudio.o | |
| 59 | +endif | |
| 60 | +ifdef CONFIG_ALSA | |
| 61 | +AUDIO_OBJS += alsaaudio.o | |
| 62 | +endif | |
| 63 | +ifdef CONFIG_DSOUND | |
| 64 | +AUDIO_OBJS += dsoundaudio.o | |
| 65 | +endif | |
| 66 | +ifdef CONFIG_FMOD | |
| 67 | +AUDIO_OBJS += fmodaudio.o | |
| 68 | +audio/audio.o audio/fmodaudio.o: CPPFLAGS := -I$(CONFIG_FMOD_INC) $(CPPFLAGS) | |
| 69 | +endif | |
| 70 | +AUDIO_OBJS+= wavcapture.o | |
| 71 | +OBJS+=$(addprefix audio/, $(AUDIO_OBJS)) | |
| 72 | + | |
| 73 | +ifdef CONFIG_SDL | |
| 74 | +OBJS+=sdl.o x_keymap.o | |
| 75 | +endif | |
| 76 | +OBJS+=vnc.o d3des.o | |
| 77 | + | |
| 78 | +ifdef CONFIG_COCOA | |
| 79 | +OBJS+=cocoa.o | |
| 80 | +endif | |
| 81 | + | |
| 82 | +ifdef CONFIG_SLIRP | |
| 83 | +CPPFLAGS+=-I$(SRC_PATH)/slirp | |
| 84 | +SLIRP_OBJS=cksum.o if.o ip_icmp.o ip_input.o ip_output.o \ | |
| 85 | +slirp.o mbuf.o misc.o sbuf.o socket.o tcp_input.o tcp_output.o \ | |
| 86 | +tcp_subr.o tcp_timer.o udp.o bootp.o debug.o tftp.o | |
| 87 | +OBJS+=$(addprefix slirp/, $(SLIRP_OBJS)) | |
| 88 | +endif | |
| 89 | + | |
| 90 | +cocoa.o: cocoa.m | |
| 91 | + $(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $< | |
| 92 | + | |
| 93 | +sdl.o: sdl.c keymaps.c sdl_keysym.h | |
| 94 | + $(CC) $(CFLAGS) $(CPPFLAGS) $(SDL_CFLAGS) $(BASE_CFLAGS) -c -o $@ $< | |
| 95 | + | |
| 96 | +vnc.o: vnc.c keymaps.c sdl_keysym.h vnchextile.h d3des.c d3des.h | |
| 97 | + $(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $< | |
| 98 | + | |
| 99 | +audio/sdlaudio.o: audio/sdlaudio.c | |
| 100 | + $(CC) $(CFLAGS) $(CPPFLAGS) $(SDL_CFLAGS) $(BASE_CFLAGS) -c -o $@ $< | |
| 101 | + | |
| 102 | +libqemu_common.a: $(OBJS) | |
| 103 | + rm -f $@ | |
| 104 | + $(AR) rcs $@ $(OBJS) | |
| 105 | + | |
| 106 | +###################################################################### | |
| 107 | + | |
| 108 | +qemu-img$(EXESUF): qemu-img.o block.o block-raw.o libqemu_common.a | |
| 109 | + $(CC) $(LDFLAGS) $(BASE_LDFLAGS) -o $@ $^ -lz $(LIBS) | |
| 110 | + | |
| 111 | +%.o: %.c | |
| 112 | + $(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $< | |
| 113 | + | |
| 114 | +# dyngen host tool | |
| 37 | 115 | dyngen$(EXESUF): dyngen.c |
| 38 | 116 | $(HOST_CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -o $@ $^ |
| 39 | 117 | |
| 40 | 118 | clean: |
| 41 | 119 | # avoid old build problems by removing potentially incorrect old files |
| 42 | 120 | rm -f config.mak config.h op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h |
| 43 | - rm -f *.o *.a $(TOOLS) dyngen$(EXESUF) TAGS cscope.* *.pod *~ */*~ | |
| 121 | + rm -f *.o *.d *.a $(TOOLS) dyngen$(EXESUF) TAGS cscope.* *.pod *~ */*~ | |
| 122 | + rm -f slirp/*.o slirp/*.d audio/*.o audio/*.d | |
| 44 | 123 | $(MAKE) -C tests clean |
| 45 | 124 | for d in $(TARGET_DIRS); do \ |
| 46 | 125 | $(MAKE) -C $$d $@ || exit 1 ; \ |
| ... | ... | @@ -180,3 +259,6 @@ tarbin: |
| 180 | 259 | ifneq ($(wildcard .depend),) |
| 181 | 260 | include .depend |
| 182 | 261 | endif |
| 262 | + | |
| 263 | +# Include automatically generated dependency files | |
| 264 | +-include $(wildcard *.d audio/*.d slirp/*.d) | ... | ... |
Makefile.target
| ... | ... | @@ -23,7 +23,7 @@ ifeq ($(TARGET_ARCH), sparc64) |
| 23 | 23 | TARGET_BASE_ARCH:=sparc |
| 24 | 24 | endif |
| 25 | 25 | TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH) |
| 26 | -VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw:$(SRC_PATH)/audio | |
| 26 | +VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw | |
| 27 | 27 | CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MP |
| 28 | 28 | ifdef CONFIG_DARWIN_USER |
| 29 | 29 | VPATH+=:$(SRC_PATH)/darwin-user |
| ... | ... | @@ -399,43 +399,25 @@ ifeq ($(ARCH),alpha) |
| 399 | 399 | endif |
| 400 | 400 | |
| 401 | 401 | # must use static linking to avoid leaving stuff in virtual address space |
| 402 | -VL_OBJS=vl.o osdep.o readline.o monitor.o pci.o console.o loader.o isa_mmio.o | |
| 403 | -VL_OBJS+=cutils.o | |
| 402 | +VL_OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o | |
| 403 | +# XXX: suppress QEMU_TOOL tests | |
| 404 | 404 | VL_OBJS+=block.o block-raw.o |
| 405 | -VL_OBJS+=block-cow.o block-qcow.o aes.o block-vmdk.o block-cloop.o block-dmg.o block-bochs.o block-vpc.o block-vvfat.o block-qcow2.o block-parallels.o | |
| 406 | 405 | VL_OBJS+=irq.o |
| 407 | -ifdef CONFIG_WIN32 | |
| 408 | -VL_OBJS+=tap-win32.o | |
| 409 | -endif | |
| 410 | 406 | |
| 411 | -SOUND_HW = sb16.o es1370.o | |
| 412 | -AUDIODRV = audio.o noaudio.o wavaudio.o mixeng.o | |
| 413 | -ifdef CONFIG_SDL | |
| 414 | -AUDIODRV += sdlaudio.o | |
| 415 | -endif | |
| 416 | -ifdef CONFIG_OSS | |
| 417 | -AUDIODRV += ossaudio.o | |
| 418 | -endif | |
| 419 | -ifdef CONFIG_COREAUDIO | |
| 420 | -AUDIODRV += coreaudio.o | |
| 421 | -endif | |
| 422 | 407 | ifdef CONFIG_ALSA |
| 423 | -AUDIODRV += alsaaudio.o | |
| 424 | 408 | LIBS += -lasound |
| 425 | 409 | endif |
| 426 | 410 | ifdef CONFIG_DSOUND |
| 427 | -AUDIODRV += dsoundaudio.o | |
| 428 | 411 | LIBS += -lole32 -ldxguid |
| 429 | 412 | endif |
| 430 | 413 | ifdef CONFIG_FMOD |
| 431 | -AUDIODRV += fmodaudio.o | |
| 432 | -audio.o fmodaudio.o: CPPFLAGS := -I$(CONFIG_FMOD_INC) $(CPPFLAGS) | |
| 433 | 414 | LIBS += $(CONFIG_FMOD_LIB) |
| 434 | 415 | endif |
| 416 | + | |
| 417 | +SOUND_HW = sb16.o es1370.o | |
| 435 | 418 | ifdef CONFIG_ADLIB |
| 436 | 419 | SOUND_HW += fmopl.o adlib.o |
| 437 | 420 | endif |
| 438 | -AUDIODRV+= wavcapture.o | |
| 439 | 421 | |
| 440 | 422 | ifdef CONFIG_VNC_TLS |
| 441 | 423 | CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS) |
| ... | ... | @@ -462,7 +444,7 @@ VL_OBJS += rtl8139.o |
| 462 | 444 | |
| 463 | 445 | ifeq ($(TARGET_BASE_ARCH), i386) |
| 464 | 446 | # Hardware support |
| 465 | -VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV) | |
| 447 | +VL_OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o | |
| 466 | 448 | VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o |
| 467 | 449 | VL_OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o |
| 468 | 450 | VL_OBJS+= usb-uhci.o smbus_eeprom.o vmmouse.o vmport.o vmware_vga.o |
| ... | ... | @@ -471,7 +453,7 @@ endif |
| 471 | 453 | ifeq ($(TARGET_BASE_ARCH), ppc) |
| 472 | 454 | CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE |
| 473 | 455 | # shared objects |
| 474 | -VL_OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o $(AUDIODRV) | |
| 456 | +VL_OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o | |
| 475 | 457 | # PREP target |
| 476 | 458 | VL_OBJS+= pckbd.o ps2.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o |
| 477 | 459 | VL_OBJS+= prep_pci.o ppc_prep.o |
| ... | ... | @@ -489,7 +471,7 @@ VL_OBJS+= mips_r4k.o mips_malta.o mips_pica61.o mips_mipssim.o |
| 489 | 471 | VL_OBJS+= mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o |
| 490 | 472 | VL_OBJS+= jazz_led.o |
| 491 | 473 | VL_OBJS+= ide.o gt64xxx.o pckbd.o ps2.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o |
| 492 | -VL_OBJS+= piix_pci.o smbus_eeprom.o parallel.o mixeng.o cirrus_vga.o $(SOUND_HW) $(AUDIODRV) | |
| 474 | +VL_OBJS+= piix_pci.o smbus_eeprom.o parallel.o cirrus_vga.o $(SOUND_HW) | |
| 493 | 475 | VL_OBJS+= mipsnet.o |
| 494 | 476 | CPPFLAGS += -DHAS_AUDIO |
| 495 | 477 | endif |
| ... | ... | @@ -518,7 +500,7 @@ VL_OBJS+= arm_gic.o realview.o arm_sysctl.o |
| 518 | 500 | VL_OBJS+= arm-semi.o |
| 519 | 501 | VL_OBJS+= pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o |
| 520 | 502 | VL_OBJS+= pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o max111x.o max7310.o |
| 521 | -VL_OBJS+= spitz.o ads7846.o ide.o serial.o nand.o ecc.o $(AUDIODRV) wm8750.o | |
| 503 | +VL_OBJS+= spitz.o ads7846.o ide.o serial.o nand.o ecc.o wm8750.o | |
| 522 | 504 | VL_OBJS+= omap.o omap_lcdc.o omap1_clk.o omap_mmc.o omap_i2c.o |
| 523 | 505 | VL_OBJS+= palm.o tsc210x.o |
| 524 | 506 | CPPFLAGS += -DHAS_AUDIO |
| ... | ... | @@ -534,12 +516,7 @@ endif |
| 534 | 516 | ifdef CONFIG_GDBSTUB |
| 535 | 517 | VL_OBJS+=gdbstub.o |
| 536 | 518 | endif |
| 537 | -ifdef CONFIG_SDL | |
| 538 | -VL_OBJS+=sdl.o x_keymap.o | |
| 539 | -endif | |
| 540 | -VL_OBJS+=vnc.o d3des.o | |
| 541 | 519 | ifdef CONFIG_COCOA |
| 542 | -VL_OBJS+=cocoa.o | |
| 543 | 520 | COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit |
| 544 | 521 | ifdef CONFIG_COREAUDIO |
| 545 | 522 | COCOA_LIBS+=-framework CoreAudio |
| ... | ... | @@ -547,10 +524,6 @@ endif |
| 547 | 524 | endif |
| 548 | 525 | ifdef CONFIG_SLIRP |
| 549 | 526 | CPPFLAGS+=-I$(SRC_PATH)/slirp |
| 550 | -SLIRP_OBJS=cksum.o if.o ip_icmp.o ip_input.o ip_output.o \ | |
| 551 | -slirp.o mbuf.o misc.o sbuf.o socket.o tcp_input.o tcp_output.o \ | |
| 552 | -tcp_subr.o tcp_timer.o udp.o bootp.o debug.o tftp.o | |
| 553 | -VL_OBJS+=$(addprefix slirp/, $(SLIRP_OBJS)) | |
| 554 | 527 | endif |
| 555 | 528 | |
| 556 | 529 | VL_LDFLAGS=$(VL_OS_LDFLAGS) |
| ... | ... | @@ -589,21 +562,9 @@ ifdef CONFIG_WIN32 |
| 589 | 562 | SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole |
| 590 | 563 | endif |
| 591 | 564 | |
| 592 | -$(QEMU_SYSTEM): $(VL_OBJS) libqemu.a | |
| 565 | +$(QEMU_SYSTEM): $(VL_OBJS) ../libqemu_common.a libqemu.a | |
| 593 | 566 | $(CC) $(VL_LDFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(VL_LIBS) |
| 594 | 567 | |
| 595 | -cocoa.o: cocoa.m | |
| 596 | - $(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $< | |
| 597 | - | |
| 598 | -sdl.o: sdl.c keymaps.c sdl_keysym.h | |
| 599 | - $(CC) $(CFLAGS) $(CPPFLAGS) $(SDL_CFLAGS) $(BASE_CFLAGS) -c -o $@ $< | |
| 600 | - | |
| 601 | -vnc.o: vnc.c keymaps.c sdl_keysym.h vnchextile.h d3des.c d3des.h | |
| 602 | - $(CC) $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) -c -o $@ $< | |
| 603 | - | |
| 604 | -sdlaudio.o: sdlaudio.c | |
| 605 | - $(CC) $(CFLAGS) $(CPPFLAGS) $(SDL_CFLAGS) $(BASE_CFLAGS) -c -o $@ $< | |
| 606 | - | |
| 607 | 568 | depend: $(SRCS) |
| 608 | 569 | $(CC) -MM $(CFLAGS) $(CPPFLAGS) $(BASE_CFLAGS) $^ 1>.depend |
| 609 | 570 | |
| ... | ... | @@ -660,7 +621,7 @@ signal.o: signal.c |
| 660 | 621 | $(CC) $(CPPFLAGS) -c -o $@ $< |
| 661 | 622 | |
| 662 | 623 | clean: |
| 663 | - rm -f *.o *.a *~ $(PROGS) gen-op.h opc.h op.h nwfpe/*.o slirp/*.o fpu/*.o | |
| 624 | + rm -f *.o *.a *~ $(PROGS) gen-op.h opc.h op.h nwfpe/*.o fpu/*.o | |
| 664 | 625 | rm -f *.d */*.d |
| 665 | 626 | |
| 666 | 627 | install: all | ... | ... |