| include config.mak |
| include $(SRC_PATH)/distrib/Makefile |
| |
| TARGET_BASE_ARCH:=$(TARGET_ARCH) |
| TARGET_PATH=$(SRC_PATH)/target-$(TARGET_BASE_ARCH) |
| VPATH=$(SRC_PATH):$(TARGET_PATH):$(SRC_PATH)/hw:$(SRC_PATH)/audio:$(SRC_PATH)/telephony:$(SRC_PATH)/proxy:$(SRC_PATH)/skins |
| DEFINES=-I. -I.. -I$(TARGET_PATH) -I$(SRC_PATH) -I$(SRC_PATH)/telephony -I$(SRC_PATH)/proxy -I$(SRC_PATH)/skins |
| CFLAGS=-Wall $(OPTIM) -g $(ZLIB_CFLAGS) $(LIBPNG_CFLAGS) -MMD -MP |
| ifeq ($(CONFIG_DARWIN),yes) |
| CFLAGS+=-mdynamic-no-pic |
| endif |
| #CFLAGS+=-Werror |
| LDFLAGS=-g |
| LIBS= |
| HELPER_CFLAGS=$(CFLAGS) |
| DYNGEN=../dyngen$(EXESUF) |
| # user emulator name |
| TARGET_ARCH2=$(TARGET_ARCH) |
| ifeq ($(TARGET_ARCH),arm) |
| ifeq ($(TARGET_WORDS_BIGENDIAN),yes) |
| TARGET_ARCH2=armeb |
| endif |
| endif |
| # system emulator name |
| ifdef CONFIG_SOFTMMU |
| QEMU_SYSTEM=qemu-system-$(TARGET_ARCH2)$(EXESUF) |
| else |
| QEMU_SYSTEM=qemu-fast |
| endif |
| |
| PROGS+=$(QEMU_SYSTEM) |
| ifndef CONFIG_SOFTMMU |
| CONFIG_STATIC=y |
| endif |
| |
| ifdef CONFIG_STATIC |
| LDFLAGS+=-static |
| endif |
| |
| ifeq ($(ARCH),i386) |
| OP_CFLAGS=$(CFLAGS) -O2 -fomit-frame-pointer |
| CFLAGS+=-DUSE_MMX -mmmx |
| ifneq ($(CONFIG_DARWIN),yes) |
| OP_CFLAGS+= -mpreferred-stack-boundary=2 |
| else |
| OP_CFLAGS+= -mpreferred-stack-boundary=4 |
| endif |
| ifeq ($(HAVE_GCC3_OPTIONS),yes) |
| OP_CFLAGS+= -falign-functions=0 -fno-gcse |
| else |
| OP_CFLAGS+= -malign-functions=0 |
| endif |
| |
| ifdef TARGET_GPROF |
| USE_I386_LD=y |
| endif |
| ifdef wwCONFIG_STATIC |
| USE_I386_LD=y |
| endif |
| ifdef USE_I386_LD |
| LDFLAGS+=-Wl,-T,$(SRC_PATH)/i386.ld |
| else |
| # WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object |
| # that the kernel ELF loader considers as an executable. I think this |
| # is the simplest way to make it self virtualizable! |
| LDFLAGS+=-Wl,-shared |
| endif |
| endif |
| |
| ifeq ($(ARCH),x86_64) |
| OP_CFLAGS=$(CFLAGS) -falign-functions=0 |
| LDFLAGS+=-Wl,-T,$(SRC_PATH)/x86_64.ld |
| endif |
| |
| ifeq ($(ARCH),ppc) |
| CFLAGS+= -D__powerpc__ |
| OP_CFLAGS=$(CFLAGS) |
| LDFLAGS+=-Wl,-T,$(SRC_PATH)/ppc.ld |
| endif |
| |
| ifeq ($(ARCH),s390) |
| OP_CFLAGS=$(CFLAGS) |
| LDFLAGS+=-Wl,-T,$(SRC_PATH)/s390.ld |
| endif |
| |
| ifeq ($(ARCH),sparc) |
| ifeq ($(CONFIG_SOLARIS),yes) |
| CFLAGS+=-mcpu=ultrasparc -m32 -ffixed-g2 -ffixed-g3 |
| LDFLAGS+=-m32 |
| OP_CFLAGS=$(CFLAGS) -fno-delayed-branch -fno-omit-frame-pointer -ffixed-i0 |
| else |
| CFLAGS+=-m32 -ffixed-g1 -ffixed-g2 -ffixed-g3 -ffixed-g6 |
| LDFLAGS+=-m32 |
| OP_CFLAGS=$(CFLAGS) -fno-delayed-branch -ffixed-i0 |
| HELPER_CFLAGS=$(CFLAGS) -ffixed-i0 -mflat |
| # -static is used to avoid g1/g3 usage by the dynamic linker |
| LDFLAGS+=-Wl,-T,$(SRC_PATH)/sparc.ld -static |
| endif |
| endif |
| |
| ifeq ($(ARCH),sparc64) |
| CFLAGS+=-m64 -ffixed-g1 -ffixed-g2 -ffixed-g3 -ffixed-g6 |
| LDFLAGS+=-m64 |
| OP_CFLAGS=$(CFLAGS) -fno-delayed-branch -ffixed-i0 |
| endif |
| |
| ifeq ($(ARCH),alpha) |
| # -msmall-data is not used because we want two-instruction relocations |
| # for the constant constructions |
| OP_CFLAGS=-Wall -O2 -g |
| # Ensure there's only a single GP |
| CFLAGS += -msmall-data |
| LDFLAGS+=-Wl,-T,$(SRC_PATH)/alpha.ld |
| endif |
| |
| ifeq ($(ARCH),ia64) |
| CFLAGS += -mno-sdata |
| OP_CFLAGS=$(CFLAGS) |
| LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld |
| endif |
| |
| ifeq ($(ARCH),arm) |
| OP_CFLAGS=$(CFLAGS) -mno-sched-prolog -fno-omit-frame-pointer |
| LDFLAGS+=-Wl,-T,$(SRC_PATH)/arm.ld |
| endif |
| |
| ifeq ($(ARCH),m68k) |
| OP_CFLAGS=$(CFLAGS) -fomit-frame-pointer |
| LDFLAGS+=-Wl,-T,m68k.ld |
| endif |
| |
| ifeq ($(HAVE_GCC3_OPTIONS),yes) |
| # very important to generate a return at the end of every operation |
| OP_CFLAGS+=-fno-reorder-blocks -fno-optimize-sibling-calls |
| endif |
| |
| ifeq ($(CONFIG_DARWIN),yes) |
| CFLAGS+= -I/opt/local/include |
| LIBS+=-lmx |
| endif |
| |
| ifeq ($(CONFIG_WIN32),yes) |
| UNAME := $(shell uname -s) |
| ifneq ($(findstring CYGWIN,$(UNAME)),) |
| CFLAGS += -mno-cygwin -D_WIN32 |
| LDFLAGS += -mno-cygwin -mwindows |
| endif |
| endif |
| |
| ######################################################### |
| |
| DEFINES+=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE |
| LIBS+=-lm |
| #now using our own zlib static version |
| #LIBS+=-L/usr/lib -lz |
| ifdef CONFIG_WIN32 |
| LIBS+=-lwinmm -lws2_32 -liphlpapi |
| endif |
| ifdef CONFIG_SOLARIS |
| LIBS+=-lsocket -lnsl -lresolv |
| endif |
| |
| # profiling code |
| ifdef TARGET_GPROF |
| LDFLAGS+=-p |
| main.o: CFLAGS+=-p |
| endif |
| |
| OBJS= main.o syscall.o mmap.o signal.o path.o osdep.o thunk.o \ |
| elfload.o linuxload.o |
| ifdef TARGET_HAS_BFLT |
| OBJS+= flatload.o |
| endif |
| |
| ifeq ($(TARGET_ARCH), arm) |
| OBJS+=nwfpe/fpa11.o nwfpe/fpa11_cpdo.o \ |
| nwfpe/fpa11_cpdt.o nwfpe/fpa11_cprt.o nwfpe/fpopcode.o nwfpe/single_cpdo.o \ |
| nwfpe/double_cpdo.o nwfpe/extended_cpdo.o arm-semi.o |
| endif |
| SRCS:= $(OBJS:.o=.c) |
| OBJS+= libqemu.a |
| |
| # cpu emulator library |
| LIBOBJS=exec.o kqemu.o translate-all.o translate-op.o cpu-exec.o\ |
| translate.o |
| ifdef CONFIG_SOFTFLOAT |
| LIBOBJS+=fpu/softfloat.o |
| else |
| LIBOBJS+=fpu/softfloat-native.o |
| endif |
| DEFINES+=-I$(SRC_PATH)/fpu |
| |
| ifeq ($(TARGET_BASE_ARCH), arm) |
| ifdef CONFIG_TRACE |
| LIBOBJS += translate-trace.o translate-all-trace.o translate-op-trace.o |
| endif |
| LIBOBJS+= op_helper.o helper.o |
| endif |
| |
| # NOTE: the disassembler code is only needed for debugging |
| LIBOBJS+=disas.o |
| ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386) |
| USE_I386_DIS=y |
| endif |
| ifeq ($(findstring x86_64, $(TARGET_ARCH) $(ARCH)),x86_64) |
| USE_I386_DIS=y |
| endif |
| ifdef USE_I386_DIS |
| LIBOBJS+=i386-dis.o |
| endif |
| ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha) |
| LIBOBJS+=alpha-dis.o |
| endif |
| ifeq ($(findstring ppc, $(TARGET_BASE_ARCH) $(ARCH)),ppc) |
| LIBOBJS+=ppc-dis.o |
| endif |
| ifeq ($(findstring sparc, $(TARGET_BASE_ARCH) $(ARCH)),sparc) |
| LIBOBJS+=sparc-dis.o |
| endif |
| ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm) |
| LIBOBJS+=arm-dis.o |
| endif |
| ifeq ($(findstring m68k, $(TARGET_ARCH) $(ARCH)),m68k) |
| LIBOBJS+=m68k-dis.o |
| endif |
| |
| ifdef CONFIG_GDBSTUB |
| OBJS+=gdbstub.o |
| endif |
| |
| OBJS+=android_console.o android_modem.c sim_card.o gsm.o sysdeps_qemu.o charpipe.o modem_driver.o sms.o \ |
| android_gps.o |
| |
| all: $(PROGS) |
| |
| ifeq ($(ARCH),alpha) |
| # Mark as 32 bit binary, i. e. it will be mapped into the low 31 bit of |
| # the address space (31 bit so sign extending doesn't matter) |
| echo -ne '\001\000\000\000' | dd of=qemu bs=1 seek=48 count=4 conv=notrunc |
| endif |
| |
| # must use static linking to avoid leaving stuff in virtual address space |
| VL_OBJS=vl.o osdep.o block.o readline.o monitor.o pci.o console.o loader.o sockets.o qemu_timers.o |
| VL_OBJS+= block-cloop.o block-dmg.o block-qcow.o aes.o |
| ifdef CONFIG_TRACE |
| VL_OBJS+=trace.o dcache.o varint.o |
| endif |
| |
| vl.o: android.h |
| |
| ifdef CONFIG_SHAPER |
| VL_OBJS+=shaper.o |
| vl.o: shaper.h shaper.c |
| endif |
| ifdef CONFIG_WIN32 |
| VL_OBJS+=tap-win32.o |
| endif |
| |
| AUDIODRV = audio.o noaudio.o wavaudio.o mixeng.o |
| ifdef CONFIG_WINAUDIO |
| AUDIODRV += winaudio.o |
| endif |
| ifdef CONFIG_SDL |
| AUDIODRV += sdlaudio.o |
| endif |
| ifdef CONFIG_OSS |
| AUDIODRV += ossaudio.o |
| endif |
| ifdef CONFIG_COREAUDIO |
| AUDIODRV += coreaudio.o |
| endif |
| ifdef CONFIG_ALSA |
| AUDIODRV += alsaaudio.o |
| alsaaudio.o: DEFINES := $(CONFIG_ALSA_INC) $(DEFINES) |
| #LIBS += -lasound # we use dlopen/dlsym to get ALSA functions when available |
| endif |
| ifdef CONFIG_ESD |
| AUDIODRV += esdaudio.o audio_pt_int.o |
| esdaudio.o: DEFINES := $(CONFIG_ESD_INC) $(DEFINES) |
| #LIBS += -lesd # we use dlopen/dlsym to get esound function, when available |
| endif |
| ifdef CONFIG_DSOUND |
| AUDIODRV += dsoundaudio.o |
| LIBS += -lole32 -ldxguid |
| endif |
| ifdef CONFIG_FMOD |
| AUDIODRV += fmodaudio.o |
| audio.o fmodaudio.o: DEFINES := -I$(CONFIG_FMOD_INC) $(DEFINES) |
| LIBS += $(CONFIG_FMOD_LIB) |
| endif |
| ifdef CONFIG_ADLIB |
| SOUND_HW += fmopl.o adlib.o |
| endif |
| AUDIODRV+= wavcapture.o |
| |
| AUDIOLIB := libqemu-audio.a |
| $(AUDIOLIB): $(AUDIODRV) |
| rm -f $@ |
| $(AR) rcs $@ $(AUDIODRV) |
| |
| # DMA |
| VL_OBJS+=dma.o |
| |
| # SCSI layer |
| VL_OBJS+= scsi-disk.o cdrom.o |
| |
| # USB layer |
| VL_OBJS+= usb.o usb-hub.o usb-linux.o usb-hid.o usb-ohci.o usb-msd.o |
| |
| ifeq ($(TARGET_BASE_ARCH), arm) |
| VL_OBJS+= smc91c111.o arm_pic.o arm_boot.o |
| VL_OBJS+= android_arm.o goldfish_device.o goldfish_interrupt.o goldfish_timer.o \ |
| goldfish_fb.o goldfish_tty.o goldfish_switch.o goldfish_mmc.o \ |
| goldfish_memlog.o \ |
| goldfish_battery.o \ |
| irq.o |
| |
| # platform_audio support |
| DEFINES += -DHAS_AUDIO |
| VL_OBJS += goldfish_audio.o |
| |
| ifeq ($(CONFIG_QFB), yes) |
| VL_OBJS+= qfb_dev.o qfb_fuse.o qfb_fs.o |
| endif |
| ifeq ($(CONFIG_TRACE), yes) |
| VL_OBJS+= goldfish_trace.o |
| endif |
| ifeq ($(CONFIG_SKINS), yes) |
| VL_OBJS+= goldfish_events_device.o |
| endif |
| ifeq ($(CONFIG_NAND), yes) |
| VL_OBJS+= goldfish_nand.o |
| endif |
| endif |
| ifdef CONFIG_GDBSTUB |
| VL_OBJS+=gdbstub.o |
| endif |
| |
| VL_OBJS+=android_console.o android_modem.o sim_card.o gsm.o sysdeps_qemu.o \ |
| charpipe.o modem_driver.o sms.o remote_call.o \ |
| cbuffer.o \ |
| android_gps.o |
| |
| VL_OBJS+=proxy_common.o proxy_http.o |
| |
| VL_OBJS+=android_debug.o \ |
| android_help.o \ |
| android_option.o \ |
| android_utils.o \ |
| android_resource.o \ |
| android_config.o \ |
| android_timezone.o \ |
| android_events.o \ |
| android_profile.o \ |
| android_qemud.o \ |
| android_kmsg.o \ |
| skin_image.o \ |
| skin_trackball.o \ |
| skin_keyboard.o \ |
| skin_file.o \ |
| skin_window.o \ |
| skin_scaler.o \ |
| skin_keyset.o \ |
| skin_rect.o \ |
| skin_region.o \ |
| skin_composer.o \ |
| skin_surface.o \ |
| framebuffer.o |
| |
| ifdef CONFIG_SDL |
| ifdef CONFIG_SKINS |
| VL_OBJS += loadpng.o android_main.o android_charmap.o |
| else |
| VL_OBJS+=sdl.o |
| endif |
| endif |
| VL_OBJS+=vnc.o |
| ifdef CONFIG_COCOA |
| VL_OBJS+=cocoa.o |
| COCOA_LIBS=-F/System/Library/Frameworks -framework Cocoa -framework IOKit |
| endif |
| ifdef CONFIG_COREAUDIO |
| COCOA_LIBS+=-F/System/Library/Frameworks -framework CoreAudio |
| endif |
| ifdef CONFIG_SLIRP |
| DEFINES+=-I$(SRC_PATH)/slirp |
| SLIRP_OBJS=cksum.o if.o ip_icmp.o ip_input.o ip_output.o \ |
| slirp.o mbuf.o misc.o sbuf.o socket.o tcp_input.o tcp_output.o \ |
| tcp_subr.o tcp_timer.o udp.o bootp.o debug.o tftp.o |
| VL_OBJS+=$(addprefix slirp/, $(SLIRP_OBJS)) |
| endif |
| |
| VL_LDFLAGS= |
| ifdef CONFIG_WIN32 |
| VL_LDFLAGS+=-mno-cygwin -mwindows |
| endif |
| ifndef CONFIG_WIN32 |
| ifndef CONFIG_DARWIN |
| VL_LDFLAGS+=-lX11 |
| endif |
| endif |
| |
| android_main.c: android_utils.h android_resource.h android_config.h \ |
| skin_image.h android_icons.h skin_file.h \ |
| skin_window.h |
| |
| # specific flags are needed for non soft mmu emulator |
| ifdef CONFIG_SKINS |
| VL_LIBS+=$(PNG_LIBS) |
| endif |
| ifdef CONFIG_STATIC |
| VL_LDFLAGS+=-static |
| endif |
| ifndef CONFIG_SOFTMMU |
| VL_LDFLAGS+=-Wl,-T,$(SRC_PATH)/i386-vl.ld |
| endif |
| ifndef CONFIG_DARWIN |
| ifndef CONFIG_WIN32 |
| ifndef CONFIG_SOLARIS |
| VL_LIBS+=-lutil -lrt |
| endif |
| endif |
| endif |
| ifdef TARGET_GPROF |
| vl.o: CFLAGS+=-p |
| VL_LDFLAGS+=-p |
| endif |
| |
| # we need to filter out _GNU_SOURCE from the SDL C Flags if any, because |
| # this macro is not needed at all and will break recent versions of Cygwin |
| # with the -mno-cygwin option (blame it on Cygwin/Mingw) |
| # |
| SDL_CFLAGS := $(filter-out -D_GNU_SOURCE=1,$(SDL_CFLAGS)) |
| |
| $(info SDL_CFLAGS is $(SDL_CFLAGS)) |
| |
| ifdef CONFIG_DARWIN |
| ifdef CONFIG_SDL |
| CFLAGS += $(SDL_CFLAGS) |
| endif |
| endif |
| |
| #skin_%.o android_main.o: CFLAGS+=-O0 -g -fno-omit-frame-pointer |
| |
| ifeq ($(ARCH),ia64) |
| VL_LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/ia64.ld |
| endif |
| |
| ifdef CONFIG_WIN32 |
| SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole |
| VL_OBJS+=android_icon.o |
| android_icon.o: images/android_icon.rc |
| windres $< -o $@ |
| endif |
| |
| $(QEMU_SYSTEM): $(VL_OBJS) libqemu.a $(AUDIOLIB) $(LIBPNG_LIB) $(ZLIB_LIB) |
| $(CC) $(VL_LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(VL_LIBS) |
| |
| cocoa.o: cocoa.m |
| $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $< |
| |
| android_main.o: android_main.c android.h android_icons.h android_charmap.h android_utils.h android_resource.h skin_image.h |
| $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $< |
| |
| android_console.o: android_console.c # we need SDL_CFLAGS |
| $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $< |
| |
| android_resource.o: android_resource.c android_resource.h skin_default.h |
| $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $< |
| |
| skin_image.o: skin_image.c skin_image.h android_resource.h |
| $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $< |
| |
| skin_%.o: skin_%.c skin_%.h |
| $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $< |
| |
| android_charmap.o: android_charmap.c android_charmap.h |
| $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $< |
| |
| android_utils.o: android_utils.c android_utils.h |
| $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $< |
| |
| vnc.o: vnc.c keymaps.c sdl_keysym.h vnchextile.h |
| $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $< |
| |
| sdlaudio.o: sdlaudio.c |
| $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $< |
| |
| esdaudio.o: esdaudio.c |
| $(CC) $(CFLAGS) -O0 $(DEFINES) -c -o $@ $< |
| |
| |
| depend: $(SRCS) |
| $(CC) -MM $(CFLAGS) $(DEFINES) $^ 1>.depend |
| |
| vldepend: $(VL_OBJS:.o=.c) |
| $(CC) -MM $(CFLAGS) $(DEFINES) $^ 1>.depend |
| |
| # libqemu |
| |
| libqemu.a: $(LIBOBJS) |
| rm -f $@ |
| $(AR) rcs $@ $(LIBOBJS) |
| |
| translate.o: translate.c gen-op.h opc.h cpu.h |
| |
| ifdef CONFIG_TRACE |
| translate-trace.o: translate.c gen-op-trace.h opc-trace.h cpu.h |
| $(CC) $(CFLAGS) $(DEFINES) -DGEN_TRACE -c -o $@ $< |
| endif |
| |
| translate-all.o: translate-all.c opc.h cpu.h |
| |
| translate-op.o: translate-op.c op.h opc.h cpu.h |
| |
| op.h: op.o $(DYNGEN) |
| $(DYNGEN) -o $@ $< |
| |
| opc.h: op.o $(DYNGEN) |
| $(DYNGEN) -c -o $@ $< |
| |
| gen-op.h: op.o $(DYNGEN) |
| $(DYNGEN) -g -o $@ $< |
| |
| op.o: op.c |
| $(CC) $(OP_CFLAGS) $(DEFINES) -c -o $@ $< |
| |
| ifdef CONFIG_TRACE |
| op-trace.h: op-trace.o $(DYNGEN) |
| $(DYNGEN) -o $@ $< |
| |
| opc-trace.h: op-trace.o $(DYNGEN) |
| $(DYNGEN) -c -o $@ $< |
| |
| gen-op-trace.h: op-trace.o $(DYNGEN) |
| $(DYNGEN) -g -o $@ $< |
| |
| op-trace.o: op.c |
| $(CC) $(OP_CFLAGS) $(DEFINES) -DGEN_TRACE -c -o $@ $< |
| |
| translate-all-trace.o: translate-all.c op-trace.h opc-trace.h cpu.h |
| $(CC) $(OP_CFLAGS) $(DEFINES) -DGEN_TRACE -c -o $@ $< |
| |
| translate-op-trace.o: translate-op.c op-trace.h opc-trace.h cpu.h |
| $(CC) $(OP_CFLAGS) $(DEFINES) -DGEN_TRACE -c -o $@ $< |
| |
| endif |
| |
| skin_scaler.o: CFLAGS += -O2 -g -fno-omit-frame-pointer |
| |
| helper.o: helper.c |
| $(CC) $(HELPER_CFLAGS) $(DEFINES) -c -o $@ $< |
| |
| ifeq ($(TARGET_ARCH), arm) |
| op.o: op.c op_template.h |
| ifdef CONFIG_TRACE |
| op-trace.o: op.c op_template.h |
| endif |
| endif |
| |
| loader.o: loader.c elf_ops.h |
| |
| $(OBJS) $(LIBOBJS) $(VL_OBJS): config.h ../config-host.h |
| |
| %.o: %.c |
| $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $< |
| |
| %.o: %.S |
| $(CC) $(DEFINES) -c -o $@ $< |
| |
| clean: |
| rm -f *.o *.d *.a *~ $(PROGS) gen-op.h opc.h op.h nwfpe/*.o slirp/*.o fpu/*.o |
| ifdef CONFIG_TRACE |
| rm -f opc-trace.h op-trace.h gen-op-trace.h |
| endif |
| |
| install: all |
| ifneq ($(PROGS),) |
| $(INSTALL) -m 755 -s $(PROGS) "$(DESTDIR)$(bindir)" |
| endif |
| |
| ifneq ($(wildcard .depend),) |
| include .depend |
| endif |
| |
| # Include automatically generated dependency files |
| -include $(wildcard *.d) |