Annotation of qemu/Makefile.target, revision 1.1.1.7

1.1       root        1: include config.mak
1.1.1.7 ! root        2: include $(SRC_PATH)/rules.mak
1.1       root        3: 
                      4: TARGET_BASE_ARCH:=$(TARGET_ARCH)
                      5: ifeq ($(TARGET_ARCH), x86_64)
                      6: TARGET_BASE_ARCH:=i386
                      7: endif
1.1.1.6   root        8: ifeq ($(TARGET_ARCH), mipsn32)
                      9: TARGET_BASE_ARCH:=mips
                     10: endif
                     11: ifeq ($(TARGET_ARCH), mips64)
                     12: TARGET_BASE_ARCH:=mips
                     13: endif
1.1       root       14: ifeq ($(TARGET_ARCH), ppc64)
                     15: TARGET_BASE_ARCH:=ppc
                     16: endif
1.1.1.6   root       17: ifeq ($(TARGET_ARCH), ppc64h)
                     18: TARGET_BASE_ARCH:=ppc
                     19: endif
                     20: ifeq ($(TARGET_ARCH), ppcemb)
                     21: TARGET_BASE_ARCH:=ppc
                     22: endif
1.1       root       23: ifeq ($(TARGET_ARCH), sparc64)
                     24: TARGET_BASE_ARCH:=sparc
                     25: endif
                     26: TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH)
1.1.1.6   root       27: VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw
1.1.1.7 ! root       28: CPPFLAGS=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -MMD -MT $@ -MP -DNEED_CPU_H
1.1       root       29: #CFLAGS+=-Werror
                     30: LIBS=
                     31: # user emulator name
1.1.1.6   root       32: ifndef TARGET_ARCH2
1.1.1.3   root       33: TARGET_ARCH2=$(TARGET_ARCH)
1.1.1.6   root       34: endif
1.1       root       35: ifeq ($(TARGET_ARCH),arm)
                     36:   ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
1.1.1.3   root       37:     TARGET_ARCH2=armeb
1.1       root       38:   endif
1.1.1.3   root       39: endif
1.1.1.4   root       40: ifeq ($(TARGET_ARCH),sh4)
                     41:   ifeq ($(TARGET_WORDS_BIGENDIAN),yes)
                     42:     TARGET_ARCH2=sh4eb
                     43:   endif
                     44: endif
1.1.1.2   root       45: ifeq ($(TARGET_ARCH),mips)
1.1.1.3   root       46:   ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
                     47:     TARGET_ARCH2=mipsel
1.1.1.2   root       48:   endif
                     49: endif
1.1.1.6   root       50: ifeq ($(TARGET_ARCH),mipsn32)
                     51:   ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
                     52:     TARGET_ARCH2=mipsn32el
                     53:   endif
                     54: endif
                     55: ifeq ($(TARGET_ARCH),mips64)
                     56:   ifneq ($(TARGET_WORDS_BIGENDIAN),yes)
                     57:     TARGET_ARCH2=mips64el
                     58:   endif
                     59: endif
1.1.1.7 ! root       60: 
        !            61: ifdef CONFIG_USER_ONLY
        !            62: # user emulator name
        !            63: QEMU_PROG=qemu-$(TARGET_ARCH2)
        !            64: else
1.1       root       65: # system emulator name
                     66: ifeq ($(TARGET_ARCH), i386)
1.1.1.7 ! root       67: QEMU_PROG=qemu$(EXESUF)
1.1       root       68: else
1.1.1.7 ! root       69: QEMU_PROG=qemu-system-$(TARGET_ARCH2)$(EXESUF)
1.1       root       70: endif
                     71: endif
                     72: 
1.1.1.7 ! root       73: PROGS=$(QEMU_PROG)
        !            74: 
        !            75: # cc-option
        !            76: # Usage: CFLAGS+=$(call cc-option, $(CFLAGS), -falign-functions=0, -malign-functions=0)
        !            77: 
        !            78: cc-option = $(shell if $(CC) $(1) $(2) -S -o /dev/null -xc /dev/null \
        !            79:               > /dev/null 2>&1; then echo "$(2)"; else echo "$(3)"; fi ;)
        !            80: 
        !            81: HELPER_CFLAGS=
        !            82: 
        !            83: ifeq ($(ARCH),i386)
        !            84: HELPER_CFLAGS+=-fomit-frame-pointer
        !            85: endif
        !            86: 
        !            87: ifeq ($(ARCH),sparc)
        !            88:   CFLAGS+=-ffixed-g2 -ffixed-g3
        !            89:   ifneq ($(CONFIG_SOLARIS),yes)
        !            90:     CFLAGS+=-ffixed-g1 -ffixed-g6
        !            91:     HELPER_CFLAGS+=-ffixed-i0
        !            92:   endif
        !            93: endif
        !            94: 
        !            95: ifeq ($(ARCH),sparc64)
        !            96:   ifneq ($(CONFIG_SOLARIS),yes)
        !            97:     CFLAGS+=-ffixed-g5 -ffixed-g6 -ffixed-g7
        !            98:   else
        !            99:     CFLAGS+=-ffixed-g1 -ffixed-g4 -ffixed-g5 -ffixed-g7
        !           100:   endif
        !           101: endif
        !           102: 
        !           103: ifeq ($(ARCH),alpha)
        !           104: # Ensure there's only a single GP
        !           105: CFLAGS+=-msmall-data
        !           106: endif
        !           107: 
        !           108: ifeq ($(ARCH),hppa)
        !           109: BASE_LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
        !           110: endif
        !           111: 
        !           112: ifeq ($(ARCH),ia64)
        !           113: CFLAGS+=-mno-sdata
        !           114: endif
        !           115: 
        !           116: CFLAGS+=$(OS_CFLAGS) $(ARCH_CFLAGS)
        !           117: LDFLAGS+=$(OS_LDFLAGS) $(ARCH_LDFLAGS)
        !           118: 
        !           119: CPPFLAGS+=-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
        !           120: LIBS+=-lm
        !           121: ifdef CONFIG_WIN32
        !           122: LIBS+=-lwinmm -lws2_32 -liphlpapi
        !           123: endif
        !           124: ifdef CONFIG_SOLARIS
        !           125: LIBS+=-lsocket -lnsl -lresolv
        !           126: ifdef NEEDS_LIBSUNMATH
        !           127: LIBS+=-lsunmath
        !           128: LDFLAGS+=-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib
        !           129: CFLAGS+=-I/opt/SUNWspro/prod/include/cc
        !           130: endif
        !           131: endif
        !           132: 
        !           133: kvm.o: CFLAGS+=$(KVM_CFLAGS)
        !           134: kvm-all.o: CFLAGS+=$(KVM_CFLAGS)
        !           135: 
        !           136: all: $(PROGS)
        !           137: 
        !           138: #########################################################
        !           139: # cpu emulator library
        !           140: LIBOBJS=exec.o kqemu.o translate-all.o cpu-exec.o\
        !           141:         translate.o host-utils.o
        !           142: # TCG code generator
        !           143: LIBOBJS+= tcg/tcg.o tcg/tcg-runtime.o
        !           144: CPPFLAGS+=-I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/$(ARCH)
        !           145: ifeq ($(ARCH),sparc64)
        !           146: CPPFLAGS+=-I$(SRC_PATH)/tcg/sparc
        !           147: endif
        !           148: ifdef CONFIG_SOFTFLOAT
        !           149: LIBOBJS+=fpu/softfloat.o
1.1       root      150: else
1.1.1.7 ! root      151: LIBOBJS+=fpu/softfloat-native.o
1.1       root      152: endif
1.1.1.7 ! root      153: CPPFLAGS+=-I$(SRC_PATH)/fpu
        !           154: LIBOBJS+= op_helper.o helper.o
1.1       root      155: 
1.1.1.7 ! root      156: ifeq ($(TARGET_BASE_ARCH), arm)
        !           157: LIBOBJS+= neon_helper.o iwmmxt_helper.o
1.1       root      158: endif
                    159: 
1.1.1.7 ! root      160: ifeq ($(TARGET_BASE_ARCH), alpha)
        !           161: LIBOBJS+= alpha_palcode.o
        !           162: endif
1.1.1.6   root      163: 
1.1.1.7 ! root      164: ifeq ($(TARGET_BASE_ARCH), cris)
        !           165: LIBOBJS+= cris-dis.o
        !           166: 
        !           167: ifndef CONFIG_USER_ONLY
        !           168: LIBOBJS+= mmu.o
        !           169: endif
        !           170: endif
        !           171: 
        !           172: # NOTE: the disassembler code is only needed for debugging
        !           173: LIBOBJS+=disas.o
        !           174: ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)
        !           175: USE_I386_DIS=y
        !           176: endif
        !           177: ifeq ($(findstring x86_64, $(TARGET_ARCH) $(ARCH)),x86_64)
        !           178: USE_I386_DIS=y
        !           179: endif
        !           180: ifdef USE_I386_DIS
        !           181: LIBOBJS+=i386-dis.o
        !           182: endif
        !           183: ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)
        !           184: LIBOBJS+=alpha-dis.o
        !           185: endif
        !           186: ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc)
        !           187: LIBOBJS+=ppc-dis.o
        !           188: endif
        !           189: ifeq ($(findstring mips, $(TARGET_BASE_ARCH) $(ARCH)),mips)
        !           190: LIBOBJS+=mips-dis.o
        !           191: endif
        !           192: ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc)
        !           193: LIBOBJS+=sparc-dis.o
        !           194: endif
        !           195: ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
        !           196: LIBOBJS+=arm-dis.o
        !           197: endif
        !           198: ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k)
        !           199: LIBOBJS+=m68k-dis.o
        !           200: endif
        !           201: ifeq ($(findstring sh4, $(TARGET_ARCH) $(ARCH)),sh4)
        !           202: LIBOBJS+=sh4-dis.o
        !           203: endif
        !           204: ifeq ($(findstring hppa, $(TARGET_BASE_ARCH) $(ARCH)),hppa)
        !           205: LIBOBJS+=hppa-dis.o
        !           206: endif
        !           207: ifeq ($(findstring s390, $(TARGET_ARCH) $(ARCH)),s390)
        !           208: LIBOBJS+=s390-dis.o
        !           209: endif
1.1.1.6   root      210: 
1.1.1.7 ! root      211: # libqemu
        !           212: 
        !           213: libqemu.a: $(LIBOBJS)
        !           214: 
        !           215: translate.o: translate.c cpu.h
        !           216: 
        !           217: translate-all.o: translate-all.c cpu.h
        !           218: 
        !           219: tcg/tcg.o: cpu.h
        !           220: 
        !           221: # HELPER_CFLAGS is used for all the code compiled with static register
        !           222: # variables
        !           223: op_helper.o: CFLAGS += $(HELPER_CFLAGS) $(I386_CFLAGS)
        !           224: 
        !           225: cpu-exec.o: CFLAGS += $(HELPER_CFLAGS)
        !           226: 
        !           227: #########################################################
        !           228: # Linux user emulator target
1.1.1.6   root      229: 
1.1.1.7 ! root      230: ifdef CONFIG_LINUX_USER
        !           231: 
        !           232: ifndef TARGET_ABI_DIR
        !           233:   TARGET_ABI_DIR=$(TARGET_ARCH)
        !           234: endif
        !           235: VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
        !           236: CPPFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
        !           237: 
        !           238: ifdef CONFIG_STATIC
        !           239: LDFLAGS+=-static
        !           240: endif
1.1.1.5   root      241: 
1.1       root      242: ifeq ($(ARCH),i386)
                    243: ifdef TARGET_GPROF
                    244: USE_I386_LD=y
                    245: endif
                    246: ifdef CONFIG_STATIC
                    247: USE_I386_LD=y
                    248: endif
                    249: ifdef USE_I386_LD
1.1.1.7 ! root      250: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1       root      251: else
                    252: # WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
                    253: # that the kernel ELF loader considers as an executable. I think this
                    254: # is the simplest way to make it self virtualizable!
1.1.1.7 ! root      255: LDFLAGS+=-Wl,-shared
1.1       root      256: endif
                    257: endif
                    258: 
                    259: ifeq ($(ARCH),x86_64)
1.1.1.7 ! root      260: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1       root      261: endif
                    262: 
                    263: ifeq ($(ARCH),ppc)
1.1.1.7 ! root      264: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
        !           265: endif
        !           266: 
        !           267: ifeq ($(ARCH),ppc64)
        !           268: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1.1.5   root      269: endif
1.1       root      270: 
                    271: ifeq ($(ARCH),s390)
1.1.1.7 ! root      272: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1       root      273: endif
                    274: 
                    275: ifeq ($(ARCH),sparc)
1.1.1.7 ! root      276: # -static is used to avoid g1/g3 usage by the dynamic linker   
        !           277: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
1.1.1.4   root      278: endif
1.1       root      279: 
                    280: ifeq ($(ARCH),sparc64)
1.1.1.7 ! root      281: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1       root      282: endif
                    283: 
                    284: ifeq ($(ARCH),alpha)
1.1.1.7 ! root      285: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1       root      286: endif
                    287: 
                    288: ifeq ($(ARCH),ia64)
1.1.1.7 ! root      289: LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1       root      290: endif
                    291: 
                    292: ifeq ($(ARCH),arm)
1.1.1.7 ! root      293: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1       root      294: endif
                    295: 
                    296: ifeq ($(ARCH),m68k)
1.1.1.7 ! root      297: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1.1.5   root      298: endif
                    299: 
                    300: ifeq ($(ARCH),mips)
1.1.1.6   root      301: ifeq ($(WORDS_BIGENDIAN),yes)
1.1.1.7 ! root      302: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1.1.6   root      303: else
1.1.1.7 ! root      304: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
1.1.1.6   root      305: endif
1.1       root      306: endif
                    307: 
1.1.1.6   root      308: ifeq ($(ARCH),mips64)
                    309: ifeq ($(WORDS_BIGENDIAN),yes)
1.1.1.7 ! root      310: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1.1.6   root      311: else
1.1.1.7 ! root      312: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
1.1.1.6   root      313: endif
1.1.1.3   root      314: endif
1.1       root      315: 
                    316: # profiling code
                    317: ifdef TARGET_GPROF
1.1.1.7 ! root      318: LDFLAGS+=-p
        !           319: CFLAGS+=-p
1.1       root      320: endif
                    321: 
1.1.1.7 ! root      322: OBJS= main.o syscall.o strace.o mmap.o signal.o path.o thunk.o \
        !           323:       elfload.o linuxload.o uaccess.o envlist.o
1.1.1.6   root      324: LIBS+= $(AIOLIBS)
1.1.1.4   root      325: ifdef TARGET_HAS_BFLT
                    326: OBJS+= flatload.o
                    327: endif
1.1.1.6   root      328: ifdef TARGET_HAS_ELFLOAD32
                    329: OBJS+= elfload32.o
                    330: elfload32.o: elfload.c
                    331: endif
1.1.1.4   root      332: 
1.1       root      333: ifeq ($(TARGET_ARCH), i386)
                    334: OBJS+= vm86.o
                    335: endif
                    336: ifeq ($(TARGET_ARCH), arm)
                    337: OBJS+=nwfpe/fpa11.o nwfpe/fpa11_cpdo.o \
                    338: nwfpe/fpa11_cpdt.o nwfpe/fpa11_cprt.o nwfpe/fpopcode.o nwfpe/single_cpdo.o \
                    339:  nwfpe/double_cpdo.o nwfpe/extended_cpdo.o arm-semi.o
                    340: endif
1.1.1.5   root      341: ifeq ($(TARGET_ARCH), m68k)
                    342: OBJS+= m68k-sim.o m68k-semi.o
                    343: endif
                    344: 
1.1.1.7 ! root      345: ifdef CONFIG_GDBSTUB
        !           346: OBJS+=gdbstub.o gdbstub-xml.o
1.1.1.5   root      347: endif
                    348: 
1.1       root      349: OBJS+= libqemu.a
                    350: 
1.1.1.7 ! root      351: # Note: this is a workaround. The real fix is to avoid compiling
        !           352: # cpu_signal_handler() in cpu-exec.c.
        !           353: signal.o: CFLAGS += $(HELPER_CFLAGS)
1.1       root      354: 
1.1.1.7 ! root      355: $(QEMU_PROG): $(OBJS) ../libqemu_user.a
        !           356:        $(LINK)
        !           357: ifeq ($(ARCH),alpha)
        !           358: # Mark as 32 bit binary, i. e. it will be mapped into the low 31 bit of
        !           359: # the address space (31 bit so sign extending doesn't matter)
        !           360:        echo -ne '\001\000\000\000' | dd of=qemu bs=1 seek=48 count=4 conv=notrunc
1.1       root      361: endif
                    362: 
1.1.1.7 ! root      363: endif #CONFIG_LINUX_USER
1.1       root      364: 
1.1.1.7 ! root      365: #########################################################
        !           366: # Darwin user emulator target
1.1       root      367: 
1.1.1.7 ! root      368: ifdef CONFIG_DARWIN_USER
1.1       root      369: 
1.1.1.7 ! root      370: VPATH+=:$(SRC_PATH)/darwin-user
        !           371: CPPFLAGS+=-I$(SRC_PATH)/darwin-user -I$(SRC_PATH)/darwin-user/$(TARGET_ARCH)
1.1       root      372: 
1.1.1.7 ! root      373: # Leave some space for the regular program loading zone
        !           374: LDFLAGS+=-Wl,-segaddr,__STD_PROG_ZONE,0x1000 -image_base 0x0e000000
1.1       root      375: 
1.1.1.7 ! root      376: LIBS+=-lmx
        !           377: 
        !           378: OBJS= main.o commpage.o machload.o mmap.o signal.o syscall.o thunk.o
        !           379: 
        !           380: OBJS+= libqemu.a
        !           381: 
        !           382: ifdef CONFIG_GDBSTUB
        !           383: OBJS+=gdbstub.o gdbstub-xml.o
1.1.1.3   root      384: endif
                    385: 
1.1.1.7 ! root      386: # Note: this is a workaround. The real fix is to avoid compiling
        !           387: # cpu_signal_handler() in cpu-exec.c.
        !           388: signal.o: CFLAGS += $(HELPER_CFLAGS)
        !           389: 
        !           390: $(QEMU_PROG): $(OBJS)
        !           391:        $(LINK)
        !           392: 
        !           393: endif #CONFIG_DARWIN_USER
        !           394: 
        !           395: #########################################################
        !           396: # BSD user emulator target
        !           397: 
        !           398: ifdef CONFIG_BSD_USER
        !           399: 
        !           400: VPATH+=:$(SRC_PATH)/bsd-user
        !           401: CPPFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH)
        !           402: 
        !           403: ifdef CONFIG_STATIC
        !           404: LDFLAGS+=-static
1.1.1.6   root      405: endif
                    406: 
1.1.1.7 ! root      407: ifeq ($(ARCH),i386)
        !           408: ifdef TARGET_GPROF
        !           409: USE_I386_LD=y
        !           410: endif
        !           411: ifdef CONFIG_STATIC
        !           412: USE_I386_LD=y
        !           413: endif
        !           414: ifdef USE_I386_LD
        !           415: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
        !           416: else
        !           417: # WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
        !           418: # that the kernel ELF loader considers as an executable. I think this
        !           419: # is the simplest way to make it self virtualizable!
        !           420: LDFLAGS+=-Wl,-shared
        !           421: endif
1.1.1.6   root      422: endif
                    423: 
1.1.1.7 ! root      424: ifeq ($(ARCH),x86_64)
        !           425: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
        !           426: endif
1.1.1.6   root      427: 
1.1.1.7 ! root      428: ifeq ($(ARCH),ppc)
        !           429: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1.1.6   root      430: endif
1.1.1.7 ! root      431: 
        !           432: ifeq ($(ARCH),ppc64)
        !           433: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1.1.5   root      434: endif
                    435: 
1.1.1.7 ! root      436: ifeq ($(ARCH),s390)
        !           437: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1       root      438: endif
1.1.1.7 ! root      439: 
        !           440: ifeq ($(ARCH),sparc)
        !           441: # -static is used to avoid g1/g3 usage by the dynamic linker
        !           442: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
1.1       root      443: endif
1.1.1.7 ! root      444: 
        !           445: ifeq ($(ARCH),sparc64)
        !           446: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1       root      447: endif
1.1.1.7 ! root      448: 
        !           449: ifeq ($(ARCH),alpha)
        !           450: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1       root      451: endif
1.1.1.7 ! root      452: 
        !           453: ifeq ($(ARCH),ia64)
        !           454: LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1       root      455: endif
1.1.1.7 ! root      456: 
        !           457: ifeq ($(ARCH),arm)
        !           458: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1       root      459: endif
1.1.1.7 ! root      460: 
        !           461: ifeq ($(ARCH),m68k)
        !           462: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
1.1       root      463: endif
1.1.1.7 ! root      464: 
        !           465: ifeq ($(ARCH),mips)
        !           466: ifeq ($(WORDS_BIGENDIAN),yes)
        !           467: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
        !           468: else
        !           469: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
1.1       root      470: endif
1.1.1.2   root      471: endif
1.1.1.7 ! root      472: 
        !           473: ifeq ($(ARCH),mips64)
        !           474: ifeq ($(WORDS_BIGENDIAN),yes)
        !           475: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
        !           476: else
        !           477: LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH)el.ld
1.1       root      478: endif
1.1.1.6   root      479: endif
1.1.1.3   root      480: 
1.1.1.7 ! root      481: OBJS= main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o
        !           482: OBJS+= uaccess.o
        !           483: 
        !           484: OBJS+= libqemu.a
        !           485: 
1.1       root      486: ifdef CONFIG_GDBSTUB
                    487: OBJS+=gdbstub.o
                    488: endif
                    489: 
1.1.1.7 ! root      490: # Note: this is a workaround. The real fix is to avoid compiling
        !           491: # cpu_signal_handler() in cpu-exec.c.
        !           492: signal.o: CFLAGS += $(HELPER_CFLAGS)
1.1       root      493: 
1.1.1.7 ! root      494: $(QEMU_PROG): $(OBJS) ../libqemu_user.a
        !           495:        $(LINK)
        !           496: 
        !           497: endif #CONFIG_BSD_USER
1.1       root      498: 
1.1.1.7 ! root      499: #########################################################
        !           500: # System emulator target
        !           501: ifndef CONFIG_USER_ONLY
        !           502: 
        !           503: OBJS=vl.o osdep.o monitor.o pci.o loader.o isa_mmio.o machine.o dma-helpers.o
        !           504: # virtio has to be here due to weird dependency between PCI and virtio-net.
        !           505: # need to fix this properly
        !           506: OBJS+=virtio.o virtio-blk.o virtio-balloon.o virtio-net.o virtio-console.o
        !           507: OBJS+=fw_cfg.o
        !           508: ifdef CONFIG_KVM
        !           509: OBJS+=kvm.o kvm-all.o
        !           510: endif
1.1.1.3   root      511: ifdef CONFIG_WIN32
1.1.1.7 ! root      512: OBJS+=block-raw-win32.o
1.1.1.6   root      513: else
1.1.1.7 ! root      514: ifdef CONFIG_AIO
        !           515: OBJS+=posix-aio-compat.o
        !           516: endif
        !           517: OBJS+=block-raw-posix.o
1.1.1.3   root      518: endif
1.1       root      519: 
1.1.1.7 ! root      520: LIBS+=-lz
1.1.1.2   root      521: ifdef CONFIG_ALSA
                    522: LIBS += -lasound
                    523: endif
1.1.1.7 ! root      524: ifdef CONFIG_ESD
        !           525: LIBS += -lesd
        !           526: endif
        !           527: ifdef CONFIG_PA
        !           528: LIBS += -lpulse-simple
        !           529: endif
1.1.1.2   root      530: ifdef CONFIG_DSOUND
                    531: LIBS += -lole32 -ldxguid
1.1       root      532: endif
                    533: ifdef CONFIG_FMOD
                    534: LIBS += $(CONFIG_FMOD_LIB)
                    535: endif
1.1.1.7 ! root      536: ifdef CONFIG_OSS
        !           537: LIBS += $(CONFIG_OSS_LIB)
        !           538: endif
1.1.1.6   root      539: 
1.1.1.7 ! root      540: SOUND_HW = sb16.o es1370.o ac97.o
1.1.1.2   root      541: ifdef CONFIG_ADLIB
                    542: SOUND_HW += fmopl.o adlib.o
1.1.1.7 ! root      543: adlib.o fmopl.o: CFLAGS := ${CFLAGS} -DBUILD_Y8950=0
        !           544: endif
        !           545: ifdef CONFIG_GUS
        !           546: SOUND_HW += gus.o gusemu_hal.o gusemu_mixer.o
        !           547: endif
        !           548: ifdef CONFIG_CS4231A
        !           549: SOUND_HW += cs4231a.o
1.1.1.2   root      550: endif
1.1.1.6   root      551: 
                    552: ifdef CONFIG_VNC_TLS
                    553: CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
                    554: LIBS += $(CONFIG_VNC_TLS_LIBS)
                    555: endif
1.1.1.4   root      556: 
1.1.1.7 ! root      557: ifdef CONFIG_BLUEZ
        !           558: LIBS += $(CONFIG_BLUEZ_LIBS)
        !           559: endif
        !           560: 
1.1.1.4   root      561: # SCSI layer
1.1.1.7 ! root      562: OBJS+= lsi53c895a.o esp.o
1.1.1.2   root      563: 
                    564: # USB layer
1.1.1.7 ! root      565: OBJS+= usb-ohci.o
1.1.1.6   root      566: 
                    567: # EEPROM emulation
1.1.1.7 ! root      568: OBJS += eeprom93xx.o
1.1.1.3   root      569: 
                    570: # PCI network cards
1.1.1.7 ! root      571: OBJS += eepro100.o
        !           572: OBJS += ne2000.o
        !           573: OBJS += pcnet.o
        !           574: OBJS += rtl8139.o
        !           575: OBJS += e1000.o
        !           576: 
        !           577: # Serial mouse
        !           578: OBJS += msmouse.o
1.1       root      579: 
                    580: ifeq ($(TARGET_BASE_ARCH), i386)
                    581: # Hardware support
1.1.1.7 ! root      582: OBJS+= ide.o pckbd.o ps2.o vga.o $(SOUND_HW) dma.o
        !           583: OBJS+= fdc.o mc146818rtc.o serial.o i8259.o i8254.o pcspk.o pc.o
        !           584: OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o
        !           585: OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o hpet.o
        !           586: OBJS += device-hotplug.o pci-hotplug.o
1.1.1.6   root      587: CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
1.1       root      588: endif
                    589: ifeq ($(TARGET_BASE_ARCH), ppc)
1.1.1.6   root      590: CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
                    591: # shared objects
1.1.1.7 ! root      592: OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o
1.1.1.6   root      593: # PREP target
1.1.1.7 ! root      594: OBJS+= pckbd.o ps2.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o
        !           595: OBJS+= prep_pci.o ppc_prep.o
1.1.1.6   root      596: # Mac shared devices
1.1.1.7 ! root      597: OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o escc.o
1.1.1.6   root      598: # OldWorld PowerMac
1.1.1.7 ! root      599: OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
1.1.1.6   root      600: # NewWorld PowerMac
1.1.1.7 ! root      601: OBJS+= unin_pci.o ppc_newworld.o
1.1.1.6   root      602: # PowerPC 4xx boards
1.1.1.7 ! root      603: OBJS+= pflash_cfi02.o ppc4xx_devs.o ppc4xx_pci.o ppc405_uc.o ppc405_boards.o
        !           604: OBJS+= ppc440.o ppc440_bamboo.o
        !           605: # PowerPC E500 boards
        !           606: OBJS+= ppce500_pci.o ppce500_mpc8544ds.o
        !           607: ifdef FDT_LIBS
        !           608: OBJS+= device_tree.o
        !           609: LIBS+= $(FDT_LIBS)
        !           610: endif
        !           611: ifdef CONFIG_KVM
        !           612: OBJS+= kvm_ppc.o
        !           613: endif
1.1.1.6   root      614: endif
                    615: ifeq ($(TARGET_BASE_ARCH), mips)
1.1.1.7 ! root      616: OBJS+= mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
        !           617: OBJS+= mips_timer.o mips_int.o dma.o vga.o serial.o i8254.o i8259.o rc4030.o
        !           618: OBJS+= g364fb.o jazz_led.o
        !           619: OBJS+= ide.o gt64xxx.o pckbd.o ps2.o fdc.o mc146818rtc.o usb-uhci.o acpi.o ds1225y.o
        !           620: OBJS+= piix_pci.o parallel.o cirrus_vga.o pcspk.o $(SOUND_HW)
        !           621: OBJS+= mipsnet.o
        !           622: OBJS+= pflash_cfi01.o
        !           623: OBJS+= vmware_vga.o
        !           624: CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE
1.1       root      625: endif
1.1.1.6   root      626: ifeq ($(TARGET_BASE_ARCH), cris)
1.1.1.7 ! root      627: # Boards
        !           628: OBJS+= etraxfs.o axis_dev88.o
        !           629: 
        !           630: # IO blocks
        !           631: OBJS+= etraxfs_dma.o
        !           632: OBJS+= etraxfs_pic.o
        !           633: OBJS+= etraxfs_eth.o
        !           634: OBJS+= etraxfs_timer.o
        !           635: OBJS+= etraxfs_ser.o
        !           636: 
        !           637: OBJS+= ptimer.o
        !           638: OBJS+= pflash_cfi02.o nand.o
1.1       root      639: endif
                    640: ifeq ($(TARGET_BASE_ARCH), sparc)
                    641: ifeq ($(TARGET_ARCH), sparc64)
1.1.1.7 ! root      642: OBJS+= sun4u.o ide.o pckbd.o ps2.o vga.o apb_pci.o
        !           643: OBJS+= fdc.o mc146818rtc.o serial.o m48t59.o
        !           644: OBJS+= cirrus_vga.o parallel.o ptimer.o
        !           645: else
        !           646: OBJS+= sun4m.o tcx.o pcnet.o iommu.o m48t59.o slavio_intctl.o
        !           647: OBJS+= slavio_timer.o escc.o slavio_misc.o fdc.o sparc32_dma.o
        !           648: OBJS+= cs4231.o ptimer.o eccmemctl.o sbi.o sun4c_intctl.o
1.1.1.2   root      649: endif
1.1       root      650: endif
1.1.1.2   root      651: ifeq ($(TARGET_BASE_ARCH), arm)
1.1.1.7 ! root      652: OBJS+= integratorcp.o versatilepb.o ps2.o smc91c111.o arm_pic.o arm_timer.o
        !           653: OBJS+= arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o
        !           654: OBJS+= versatile_pci.o ptimer.o
        !           655: OBJS+= realview_gic.o realview.o arm_sysctl.o mpcore.o
        !           656: OBJS+= armv7m.o armv7m_nvic.o stellaris.o pl022.o stellaris_enet.o
        !           657: OBJS+= pl061.o
        !           658: OBJS+= arm-semi.o
        !           659: OBJS+= pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o
        !           660: OBJS+= pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o pxa2xx_keypad.o
        !           661: OBJS+= pflash_cfi01.o gumstix.o
        !           662: OBJS+= zaurus.o ide.o serial.o nand.o ecc.o spitz.o tosa.o tc6393xb.o
        !           663: OBJS+= omap1.o omap_lcdc.o omap_dma.o omap_clk.o omap_mmc.o omap_i2c.o
        !           664: OBJS+= omap2.o omap_dss.o soc_dma.o
        !           665: OBJS+= omap_sx1.o palm.o tsc210x.o
        !           666: OBJS+= nseries.o blizzard.o onenand.o vga.o cbus.o tusb6010.o usb-musb.o
        !           667: OBJS+= tsc2005.o bt-hci-csr.o
        !           668: OBJS+= mst_fpga.o mainstone.o
        !           669: OBJS+= musicpal.o pflash_cfi02.o
1.1.1.6   root      670: CPPFLAGS += -DHAS_AUDIO
1.1.1.3   root      671: endif
                    672: ifeq ($(TARGET_BASE_ARCH), sh4)
1.1.1.7 ! root      673: OBJS+= shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o
        !           674: OBJS+= sh_timer.o ptimer.o sh_serial.o sh_intc.o sh_pci.o sm501.o serial.o
        !           675: OBJS+= ide.o
1.1       root      676: endif
1.1.1.6   root      677: ifeq ($(TARGET_BASE_ARCH), m68k)
1.1.1.7 ! root      678: OBJS+= an5206.o mcf5206.o ptimer.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o
        !           679: OBJS+= m68k-semi.o dummy_m68k.o
1.1       root      680: endif
1.1.1.6   root      681: ifdef CONFIG_GDBSTUB
1.1.1.7 ! root      682: OBJS+=gdbstub.o gdbstub-xml.o
1.1       root      683: endif
                    684: ifdef CONFIG_COCOA
1.1.1.2   root      685: COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit
                    686: ifdef CONFIG_COREAUDIO
                    687: COCOA_LIBS+=-framework CoreAudio
                    688: endif
1.1       root      689: endif
                    690: ifdef CONFIG_SLIRP
1.1.1.5   root      691: CPPFLAGS+=-I$(SRC_PATH)/slirp
1.1       root      692: endif
                    693: 
1.1.1.7 ! root      694: LIBS+=$(AIOLIBS)
1.1       root      695: # specific flags are needed for non soft mmu emulator
                    696: ifdef CONFIG_STATIC
1.1.1.7 ! root      697: LDFLAGS+=-static
1.1       root      698: endif
                    699: ifndef CONFIG_DARWIN
                    700: ifndef CONFIG_WIN32
1.1.1.3   root      701: ifndef CONFIG_SOLARIS
1.1.1.7 ! root      702: ifndef CONFIG_AIX
        !           703: LIBS+=-lutil
        !           704: endif
1.1       root      705: endif
                    706: endif
1.1.1.3   root      707: endif
1.1       root      708: ifdef TARGET_GPROF
1.1.1.7 ! root      709: vl.o: CFLAGS+=-p
        !           710: LDFLAGS+=-p
1.1       root      711: endif
                    712: 
                    713: ifeq ($(ARCH),ia64)
1.1.1.7 ! root      714: LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld
1.1.1.4   root      715: endif
                    716: 
1.1.1.2   root      717: ifdef CONFIG_WIN32
                    718: SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
                    719: endif
                    720: 
1.1.1.7 ! root      721: # profiling code
        !           722: ifdef TARGET_GPROF
        !           723: LDFLAGS+=-p
        !           724: main.o: CFLAGS+=-p
        !           725: endif
1.1       root      726: 
1.1.1.7 ! root      727: $(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS)
1.1       root      728: 
1.1.1.7 ! root      729: $(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a
        !           730:        $(LINK)
1.1.1.2   root      731: 
1.1.1.7 ! root      732: endif # !CONFIG_USER_ONLY
1.1       root      733: 
1.1.1.7 ! root      734: gdbstub-xml.c: $(TARGET_XML_FILES) feature_to_c.sh
1.1       root      735:        rm -f $@
1.1.1.7 ! root      736: ifeq ($(TARGET_XML_FILES),)
        !           737:        echo > $@
1.1.1.5   root      738: else
1.1.1.7 ! root      739:        $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES)
1.1.1.5   root      740: endif
                    741: 
1.1       root      742: clean:
1.1.1.7 ! root      743:        rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o
        !           744:        rm -f *.d */*.d tcg/*.o
1.1       root      745: 
1.1.1.6   root      746: install: all
1.1       root      747: ifneq ($(PROGS),)
1.1.1.3   root      748:        $(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)"
1.1       root      749: endif
                    750: 
1.1.1.6   root      751: # Include automatically generated dependency files
                    752: -include $(wildcard *.d */*.d)

unix.superglobalmegacorp.com