Annotation of qemu/Makefile.target, revision 1.1.1.2

1.1       root        1: include config.mak
                      2: 
                      3: TARGET_BASE_ARCH:=$(TARGET_ARCH)
                      4: ifeq ($(TARGET_ARCH), x86_64)
                      5: TARGET_BASE_ARCH:=i386
                      6: endif
                      7: ifeq ($(TARGET_ARCH), ppc64)
                      8: TARGET_BASE_ARCH:=ppc
                      9: endif
                     10: ifeq ($(TARGET_ARCH), sparc64)
                     11: TARGET_BASE_ARCH:=sparc
                     12: endif
                     13: TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
                     14: VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw:$(SRC_PATH)/audio
                     15: DEFINES=-I. -I$(TARGET_PATH) -I$(SRC_PATH)
                     16: ifdef CONFIG_USER_ONLY
                     17: VPATH+=:$(SRC_PATH)/linux-user
                     18: DEFINES+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ARCH)
                     19: endif
                     20: CFLAGS=-Wall -O2 -g -fno-strict-aliasing
                     21: #CFLAGS+=-Werror
                     22: LDFLAGS=-g
                     23: LIBS=
                     24: HELPER_CFLAGS=$(CFLAGS)
                     25: DYNGEN=../dyngen$(EXESUF)
                     26: # user emulator name
                     27: ifeq ($(TARGET_ARCH),arm)
                     28:   ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
                     29:     QEMU_USER=qemu-armeb
                     30:   else
                     31:     QEMU_USER=qemu-arm
                     32:   endif
                     33: else
1.1.1.2 ! root       34: ifeq ($(TARGET_ARCH),mips)
        !            35:   ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
        !            36:     QEMU_USER=qemu-mips
        !            37:   else
        !            38:     QEMU_USER=qemu-mipsel
        !            39:   endif
        !            40: else
1.1       root       41:   QEMU_USER=qemu-$(TARGET_ARCH)
                     42: endif
1.1.1.2 ! root       43: endif
1.1       root       44: # system emulator name
                     45: ifdef CONFIG_SOFTMMU
                     46: ifeq ($(TARGET_ARCH), i386)
                     47: QEMU_SYSTEM=qemu$(EXESUF)
                     48: else
                     49: QEMU_SYSTEM=qemu-system-$(TARGET_ARCH)$(EXESUF)
                     50: endif
                     51: else
                     52: QEMU_SYSTEM=qemu-fast
                     53: endif
                     54: 
                     55: ifdef CONFIG_USER_ONLY
                     56: PROGS=$(QEMU_USER)
                     57: else
                     58: PROGS+=$(QEMU_SYSTEM)
                     59: ifndef CONFIG_SOFTMMU
                     60: CONFIG_STATIC=y
                     61: endif
                     62: endif # !CONFIG_USER_ONLY
                     63: 
                     64: ifdef CONFIG_STATIC
                     65: LDFLAGS+=-static
                     66: endif
                     67: 
                     68: ifeq ($(ARCH),i386)
                     69: CFLAGS+=-fomit-frame-pointer
                     70: OP_CFLAGS=$(CFLAGS) -mpreferred-stack-boundary=2
                     71: ifeq ($(HAVE_GCC3_OPTIONS),yes)
                     72: OP_CFLAGS+= -falign-functions=0 -fno-gcse
                     73: else
                     74: OP_CFLAGS+= -malign-functions=0
                     75: endif
                     76: 
                     77: ifdef TARGET_GPROF
                     78: USE_I386_LD=y
                     79: endif
                     80: ifdef CONFIG_STATIC
                     81: USE_I386_LD=y
                     82: endif
                     83: ifdef USE_I386_LD
                     84: LDFLAGS+=-Wl,-T,$(SRC_PATH)/i386.ld
                     85: else
                     86: # WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
                     87: # that the kernel ELF loader considers as an executable. I think this
                     88: # is the simplest way to make it self virtualizable!
                     89: LDFLAGS+=-Wl,-shared
                     90: endif
                     91: endif
                     92: 
                     93: ifeq ($(ARCH),x86_64)
                     94: OP_CFLAGS=$(CFLAGS) -falign-functions=0
                     95: LDFLAGS+=-Wl,-T,$(SRC_PATH)/x86_64.ld
                     96: endif
                     97: 
                     98: ifeq ($(ARCH),ppc)
                     99: CFLAGS+= -D__powerpc__
                    100: OP_CFLAGS=$(CFLAGS)
                    101: LDFLAGS+=-Wl,-T,$(SRC_PATH)/ppc.ld
                    102: endif
                    103: 
                    104: ifeq ($(ARCH),s390)
                    105: OP_CFLAGS=$(CFLAGS)
                    106: LDFLAGS+=-Wl,-T,$(SRC_PATH)/s390.ld
                    107: endif
                    108: 
                    109: ifeq ($(ARCH),sparc)
                    110: CFLAGS+=-m32 -ffixed-g1 -ffixed-g2 -ffixed-g3 -ffixed-g6
                    111: LDFLAGS+=-m32
                    112: OP_CFLAGS=$(CFLAGS) -fno-delayed-branch -ffixed-i0
                    113: HELPER_CFLAGS=$(CFLAGS) -ffixed-i0 -mflat
                    114: # -static is used to avoid g1/g3 usage by the dynamic linker
                    115: LDFLAGS+=-Wl,-T,$(SRC_PATH)/sparc.ld -static
                    116: endif
                    117: 
                    118: ifeq ($(ARCH),sparc64)
                    119: CFLAGS+=-m64 -ffixed-g1 -ffixed-g2 -ffixed-g3 -ffixed-g6
                    120: LDFLAGS+=-m64
                    121: OP_CFLAGS=$(CFLAGS) -fno-delayed-branch -ffixed-i0
                    122: endif
                    123: 
                    124: ifeq ($(ARCH),alpha)
                    125: # -msmall-data is not used because we want two-instruction relocations
                    126: # for the constant constructions
                    127: OP_CFLAGS=-Wall -O2 -g
                    128: # Ensure there's only a single GP
                    129: CFLAGS += -msmall-data
                    130: LDFLAGS+=-Wl,-T,$(SRC_PATH)/alpha.ld
                    131: endif
                    132: 
                    133: ifeq ($(ARCH),ia64)
                    134: CFLAGS += -mno-sdata
                    135: OP_CFLAGS=$(CFLAGS)
                    136: LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
                    137: endif
                    138: 
                    139: ifeq ($(ARCH),arm)
                    140: OP_CFLAGS=$(CFLAGS) -mno-sched-prolog -fno-omit-frame-pointer
                    141: LDFLAGS+=-Wl,-T,$(SRC_PATH)/arm.ld
                    142: endif
                    143: 
                    144: ifeq ($(ARCH),m68k)
                    145: OP_CFLAGS=$(CFLAGS) -fomit-frame-pointer
                    146: LDFLAGS+=-Wl,-T,m68k.ld
                    147: endif
                    148: 
                    149: ifeq ($(HAVE_GCC3_OPTIONS),yes)
                    150: # very important to generate a return at the end of every operation
                    151: OP_CFLAGS+=-fno-reorder-blocks -fno-optimize-sibling-calls
                    152: endif
                    153: 
                    154: ifeq ($(CONFIG_DARWIN),yes)
                    155: OP_CFLAGS+= -mdynamic-no-pic
                    156: LIBS+=-lmx
                    157: endif
                    158: 
                    159: #########################################################
                    160: 
                    161: DEFINES+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
                    162: LIBS+=-lm
                    163: ifndef CONFIG_USER_ONLY
                    164: LIBS+=-lz
                    165: endif
                    166: ifdef CONFIG_WIN32
                    167: LIBS+=-lwinmm -lws2_32 -liphlpapi
                    168: endif
                    169: 
                    170: # profiling code
                    171: ifdef TARGET_GPROF
                    172: LDFLAGS+=-p
                    173: main.o: CFLAGS+=-p
                    174: endif
                    175: 
                    176: OBJS= elfload.o main.o syscall.o mmap.o signal.o path.o osdep.o thunk.o 
                    177: ifeq ($(TARGET_ARCH), i386)
                    178: OBJS+= vm86.o
                    179: endif
                    180: ifeq ($(TARGET_ARCH), arm)
                    181: OBJS+=nwfpe/fpa11.o nwfpe/fpa11_cpdo.o \
                    182: nwfpe/fpa11_cpdt.o nwfpe/fpa11_cprt.o nwfpe/fpopcode.o nwfpe/single_cpdo.o \
                    183:  nwfpe/double_cpdo.o nwfpe/extended_cpdo.o arm-semi.o
                    184: endif
                    185: SRCS:= $(OBJS:.o=.c)
                    186: OBJS+= libqemu.a
                    187: 
                    188: # cpu emulator library
                    189: LIBOBJS=exec.o kqemu.o translate-op.o translate-all.o cpu-exec.o\
                    190:         translate.o op.o 
                    191: ifdef CONFIG_SOFTFLOAT
                    192: LIBOBJS+=fpu/softfloat.o
                    193: else
                    194: LIBOBJS+=fpu/softfloat-native.o
                    195: endif
                    196: DEFINES+=-I$(SRC_PATH)/fpu
                    197: 
                    198: ifeq ($(TARGET_ARCH), i386)
                    199: LIBOBJS+=helper.o helper2.o
                    200: ifeq ($(ARCH), i386)
                    201: LIBOBJS+=translate-copy.o
                    202: endif
                    203: endif
                    204: 
                    205: ifeq ($(TARGET_ARCH), x86_64)
                    206: LIBOBJS+=helper.o helper2.o
                    207: endif
                    208: 
                    209: ifeq ($(TARGET_BASE_ARCH), ppc)
                    210: LIBOBJS+= op_helper.o helper.o
                    211: endif
                    212: 
                    213: ifeq ($(TARGET_ARCH), mips)
                    214: LIBOBJS+= op_helper.o helper.o
                    215: endif
                    216: 
                    217: ifeq ($(TARGET_BASE_ARCH), sparc)
                    218: LIBOBJS+= op_helper.o helper.o
                    219: endif
                    220: 
                    221: ifeq ($(TARGET_BASE_ARCH), arm)
1.1.1.2 ! root      222: LIBOBJS+= op_helper.o helper.o
1.1       root      223: endif
                    224: 
                    225: # NOTE: the disassembler code is only needed for debugging
                    226: LIBOBJS+=disas.o 
                    227: ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)
                    228: USE_I386_DIS=y
                    229: endif
                    230: ifeq ($(findstring x86_64, $(TARGET_ARCH) $(ARCH)),x86_64)
                    231: USE_I386_DIS=y
                    232: endif
                    233: ifdef USE_I386_DIS
                    234: LIBOBJS+=i386-dis.o
                    235: endif
                    236: ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)
                    237: LIBOBJS+=alpha-dis.o
                    238: endif
                    239: ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc)
                    240: LIBOBJS+=ppc-dis.o
                    241: endif
                    242: ifeq ($(findstring mips, $(TARGET_ARCH) $(ARCH)),mips)
                    243: LIBOBJS+=mips-dis.o
                    244: endif
                    245: ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
                    246: LIBOBJS+=sparc-dis.o
                    247: endif
                    248: ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
                    249: LIBOBJS+=arm-dis.o
                    250: endif
1.1.1.2 ! root      251: ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
        !           252: LIBOBJS+=m68k-dis.o
        !           253: endif
1.1       root      254: 
                    255: ifeq ($(ARCH),ia64)
                    256: OBJS += ia64-syscall.o
                    257: endif
                    258: ifdef CONFIG_GDBSTUB
                    259: OBJS+=gdbstub.o
                    260: endif
                    261: 
                    262: all: $(PROGS)
                    263: 
                    264: $(QEMU_USER): $(OBJS)
                    265:        $(CC) $(LDFLAGS) -o $@ $^  $(LIBS)
                    266: ifeq ($(ARCH),alpha)
                    267: # Mark as 32 bit binary, i. e. it will be mapped into the low 31 bit of
                    268: # the address space (31 bit so sign extending doesn't matter)
                    269:        echo -ne '\001\000\000\000' | dd of=qemu bs=1 seek=48 count=4 conv=notrunc
                    270: endif
                    271: 
                    272: # must use static linking to avoid leaving stuff in virtual address space
                    273: VL_OBJS=vl.o osdep.o block.o readline.o monitor.o pci.o console.o
                    274: 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
                    275: 
1.1.1.2 ! root      276: SOUND_HW = sb16.o es1370.o
1.1       root      277: AUDIODRV = audio.o noaudio.o wavaudio.o
                    278: ifdef CONFIG_SDL
                    279: AUDIODRV += sdlaudio.o
                    280: endif
                    281: ifdef CONFIG_OSS
                    282: AUDIODRV += ossaudio.o
                    283: endif
1.1.1.2 ! root      284: ifdef CONFIG_COREAUDIO
        !           285: AUDIODRV += coreaudio.o
        !           286: endif
        !           287: ifdef CONFIG_ALSA
        !           288: AUDIODRV += alsaaudio.o
        !           289: LIBS += -lasound
        !           290: endif
        !           291: ifdef CONFIG_DSOUND
        !           292: AUDIODRV += dsoundaudio.o
        !           293: LIBS += -lole32 -ldxguid
1.1       root      294: endif
                    295: ifdef CONFIG_FMOD
                    296: AUDIODRV += fmodaudio.o
                    297: audio.o fmodaudio.o: DEFINES := -I$(CONFIG_FMOD_INC) $(DEFINES)
                    298: LIBS += $(CONFIG_FMOD_LIB)
                    299: endif
1.1.1.2 ! root      300: ifdef CONFIG_ADLIB
        !           301: SOUND_HW += fmopl.o adlib.o
        !           302: endif
        !           303: 
        !           304: # USB layer
        !           305: VL_OBJS+= usb.o usb-uhci.o usb-linux.o usb-hid.o
1.1       root      306: 
                    307: ifeq ($(TARGET_BASE_ARCH), i386)
                    308: # Hardware support
1.1.1.2 ! root      309: VL_OBJS+= ide.o ne2000.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
1.1       root      310: VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pc.o
                    311: VL_OBJS+= cirrus_vga.o mixeng.o apic.o parallel.o
1.1.1.2 ! root      312: DEFINES += -DHAS_AUDIO
1.1       root      313: endif
                    314: ifeq ($(TARGET_BASE_ARCH), ppc)
1.1.1.2 ! root      315: VL_OBJS+= ppc.o ide.o ne2000.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
1.1       root      316: VL_OBJS+= mc146818rtc.o serial.o i8259.o i8254.o fdc.o m48t59.o
                    317: VL_OBJS+= ppc_prep.o ppc_chrp.o cuda.o adb.o openpic.o heathrow_pic.o mixeng.o
1.1.1.2 ! root      318: DEFINES += -DHAS_AUDIO
1.1       root      319: endif
                    320: ifeq ($(TARGET_ARCH), mips)
                    321: VL_OBJS+= mips_r4k.o dma.o vga.o serial.o ne2000.o i8254.o i8259.o
                    322: #VL_OBJS+= #ide.o pckbd.o fdc.o m48t59.o
                    323: endif
                    324: ifeq ($(TARGET_BASE_ARCH), sparc)
                    325: ifeq ($(TARGET_ARCH), sparc64)
1.1.1.2 ! root      326: VL_OBJS+= sun4u.o ide.o ne2000.o pckbd.o ps2.o vga.o
1.1       root      327: VL_OBJS+= fdc.o mc146818rtc.o serial.o m48t59.o
                    328: VL_OBJS+= cirrus_vga.o parallel.o
                    329: VL_OBJS+= magic-load.o
                    330: else
1.1.1.2 ! root      331: VL_OBJS+= sun4m.o tcx.o lance.o iommu.o m48t59.o magic-load.o slavio_intctl.o
        !           332: VL_OBJS+= slavio_timer.o slavio_serial.o slavio_misc.o fdc.o esp.o
        !           333: endif
1.1       root      334: endif
1.1.1.2 ! root      335: ifeq ($(TARGET_BASE_ARCH), arm)
        !           336: VL_OBJS+= integratorcp.o ps2.o smc91c111.o
1.1       root      337: endif
                    338: ifdef CONFIG_GDBSTUB
                    339: VL_OBJS+=gdbstub.o 
                    340: endif
                    341: ifdef CONFIG_SDL
                    342: VL_OBJS+=sdl.o
                    343: endif
                    344: ifdef CONFIG_COCOA
                    345: VL_OBJS+=cocoa.o
1.1.1.2 ! root      346: COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
        !           347: ifdef CONFIG_COREAUDIO
        !           348: COCOA_LIBS+=-framework CoreAudio
        !           349: endif
1.1       root      350: endif
                    351: ifdef CONFIG_SLIRP
                    352: DEFINES+=-I$(SRC_PATH)/slirp
                    353: SLIRP_OBJS=cksum.o if.o ip_icmp.o ip_input.o ip_output.o \
                    354: slirp.o mbuf.o misc.o sbuf.o socket.o tcp_input.o tcp_output.o \
                    355: tcp_subr.o tcp_timer.o udp.o bootp.o debug.o tftp.o
                    356: VL_OBJS+=$(addprefix slirp/, $(SLIRP_OBJS))
                    357: endif
                    358: 
                    359: VL_LDFLAGS=
                    360: # specific flags are needed for non soft mmu emulator
                    361: ifdef CONFIG_STATIC
                    362: VL_LDFLAGS+=-static
                    363: endif
                    364: ifndef CONFIG_SOFTMMU
                    365: VL_LDFLAGS+=-Wl,-T,$(SRC_PATH)/i386-vl.ld 
                    366: endif
                    367: ifndef CONFIG_DARWIN
                    368: ifndef CONFIG_WIN32
                    369: VL_LIBS=-lutil
                    370: endif
                    371: endif
                    372: ifdef TARGET_GPROF
                    373: vl.o: CFLAGS+=-p
                    374: VL_LDFLAGS+=-p
                    375: endif
                    376: 
                    377: ifeq ($(ARCH),ia64)
                    378: VL_LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
                    379: endif
                    380: 
1.1.1.2 ! root      381: ifdef CONFIG_WIN32
        !           382: SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
        !           383: endif
        !           384: 
1.1       root      385: $(QEMU_SYSTEM): $(VL_OBJS) libqemu.a
                    386:        $(CC) $(VL_LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(VL_LIBS)
                    387: 
                    388: cocoa.o: cocoa.m
                    389:        $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
                    390: 
                    391: sdl.o: sdl.c keymaps.c sdl_keysym.h
                    392:        $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $<
                    393: 
                    394: sdlaudio.o: sdlaudio.c
                    395:        $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $<
                    396: 
                    397: depend: $(SRCS)
                    398:        $(CC) -MM $(CFLAGS) $(DEFINES) $^ 1>.depend
                    399: 
1.1.1.2 ! root      400: vldepend: $(VL_OBJS:.o=.c)
        !           401:        $(CC) -MM $(CFLAGS) $(DEFINES) $^ 1>.depend
        !           402: 
1.1       root      403: # libqemu 
                    404: 
                    405: libqemu.a: $(LIBOBJS)
                    406:        rm -f $@
                    407:        $(AR) rcs $@ $(LIBOBJS)
                    408: 
                    409: translate.o: translate.c gen-op.h opc.h cpu.h
                    410: 
                    411: translate-all.o: translate-all.c opc.h cpu.h
                    412: 
                    413: translate-op.o: translate-all.c op.h opc.h cpu.h
                    414: 
                    415: op.h: op.o $(DYNGEN)
                    416:        $(DYNGEN) -o $@ $<
                    417: 
                    418: opc.h: op.o $(DYNGEN)
                    419:        $(DYNGEN) -c -o $@ $<
                    420: 
                    421: gen-op.h: op.o $(DYNGEN)
                    422:        $(DYNGEN) -g -o $@ $<
                    423: 
                    424: op.o: op.c
                    425:        $(CC) $(OP_CFLAGS) $(DEFINES) -c -o $@ $<
                    426: 
                    427: helper.o: helper.c
                    428:        $(CC) $(HELPER_CFLAGS) $(DEFINES) -c -o $@ $<
                    429: 
                    430: ifeq ($(TARGET_BASE_ARCH), i386)
                    431: op.o: op.c opreg_template.h ops_template.h ops_template_mem.h ops_mem.h ops_sse.h
                    432: endif
                    433: 
                    434: ifeq ($(TARGET_ARCH), arm)
                    435: op.o: op.c op_template.h
                    436: endif
                    437: 
                    438: ifeq ($(TARGET_BASE_ARCH), sparc)
                    439: op.o: op.c op_template.h op_mem.h fop_template.h fbranch_template.h
                    440: magic_load.o: elf_op.h
                    441: endif
                    442: 
                    443: ifeq ($(TARGET_BASE_ARCH), ppc)
                    444: op.o: op.c op_template.h op_mem.h
                    445: op_helper.o: op_helper_mem.h
                    446: translate.o: translate.c translate_init.c
                    447: endif
                    448: 
                    449: ifeq ($(TARGET_ARCH), mips)
                    450: op.o: op.c op_template.c op_mem.c
                    451: op_helper.o: op_helper_mem.c
                    452: endif
                    453: 
                    454: %.o: %.c
                    455:        $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
                    456: 
                    457: %.o: %.S
                    458:        $(CC) $(DEFINES) -c -o $@ $<
                    459: 
                    460: clean:
                    461:        rm -f *.o  *.a *~ $(PROGS) gen-op.h opc.h op.h nwfpe/*.o slirp/*.o fpu/*.o
                    462: 
                    463: install: all 
                    464: ifneq ($(PROGS),)
                    465:        install -m 755 -s $(PROGS) "$(bindir)"
                    466: endif
                    467: 
                    468: ifneq ($(wildcard .depend),)
                    469: include .depend
                    470: endif
1.1.1.2 ! root      471: 
        !           472: ifeq (1, 0)
        !           473: audio.o sdlaudio.o dsoundaudio.o ossaudio.o wavaudio.o noaudio.o \
        !           474: fmodaudio.o alsaaudio.o mixeng.o sb16.o es1370.o gus.o adlib.o: \
        !           475: CFLAGS := $(CFLAGS) -Wall -Werror -W -Wsign-compare
        !           476: endif

unix.superglobalmegacorp.com