/[qemu]/qemu/Makefile
ViewVC logotype

Diff of /qemu/Makefile

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.45 by bellard, Sun Jul 13 17:29:20 2003 UTC revision 1.46 by bellard, Sun Aug 10 21:36:42 2003 UTC
# Line 1  Line 1 
1  include config.mak  include config-host.mak
2    
3  CFLAGS=-Wall -O2 -g  CFLAGS=-Wall -O2 -g
4  LDFLAGS=-g  LDFLAGS=-g
5  LIBS=  LIBS=
 DEFINES=-DHAVE_BYTESWAP_H  
 HELPER_CFLAGS=$(CFLAGS)  
 PROGS=qemu  
   
 ifdef CONFIG_STATIC  
 LDFLAGS+=-static  
 endif  
   
 ifeq ($(ARCH),i386)  
 CFLAGS+=-fomit-frame-pointer  
 OP_CFLAGS=$(CFLAGS) -mpreferred-stack-boundary=2  
 ifeq ($(HAVE_GCC3_OPTIONS),yes)  
 OP_CFLAGS+= -falign-functions=0  
 else  
 OP_CFLAGS+= -malign-functions=0  
 endif  
 ifdef TARGET_GPROF  
 LDFLAGS+=-Wl,-T,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  
 ifeq ($(TARGET_ARCH), i386)  
 PROGS+=vl vlmkcow  
 endif  
 endif  
   
 ifeq ($(ARCH),ppc)  
 OP_CFLAGS=$(CFLAGS)  
 LDFLAGS+=-Wl,-T,ppc.ld  
 endif  
   
 ifeq ($(ARCH),s390)  
 OP_CFLAGS=$(CFLAGS)  
 LDFLAGS+=-Wl,-T,s390.ld  
 endif  
   
 ifeq ($(ARCH),sparc)  
 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,sparc.ld -static  
 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,alpha.ld  
 endif  
   
 ifeq ($(ARCH),ia64)  
 OP_CFLAGS=$(CFLAGS)  
 endif  
   
 ifeq ($(ARCH),arm)  
 OP_CFLAGS=$(CFLAGS) -mno-sched-prolog  
 LDFLAGS+=-Wl,-T,arm.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  
   
 #########################################################  
   
6  DEFINES+=-D_GNU_SOURCE  DEFINES+=-D_GNU_SOURCE
7  LIBS+=-lm  TOOLS=vlmkcow
8    
9  # profiling code  all: dyngen $(TOOLS) qemu-doc.html
10  ifdef TARGET_GPROF          for d in $(TARGET_DIRS); do \
11  LDFLAGS+=-p          make -C $$d $@ || exit 1 ; \
12  main.o: CFLAGS+=-p          done
 endif  
   
 OBJS= elfload.o main.o syscall.o mmap.o signal.o path.o  
 ifeq ($(TARGET_ARCH), i386)  
 OBJS+= vm86.o  
 endif  
 SRCS:= $(OBJS:.o=.c)  
 OBJS+= libqemu.a  
   
 # cpu emulator library  
 LIBOBJS=thunk.o exec.o translate.o cpu-exec.o gdbstub.o  
   
 ifeq ($(TARGET_ARCH), i386)  
 LIBOBJS+=translate-i386.o op-i386.o helper-i386.o  
 endif  
 ifeq ($(TARGET_ARCH), arm)  
 LIBOBJS+=translate-arm.o op-arm.o  
 endif  
   
 # NOTE: the disassembler code is only needed for debugging  
 LIBOBJS+=disas.o  
 ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)  
 LIBOBJS+=i386-dis.o  
 endif  
 ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)  
 LIBOBJS+=alpha-dis.o  
 endif  
 ifeq ($(findstring ppc, $(TARGET_ARCH) $(ARCH)),ppc)  
 LIBOBJS+=ppc-dis.o  
 endif  
 ifeq ($(findstring sparc, $(TARGET_ARCH) $(ARCH)),sparc)  
 LIBOBJS+=sparc-dis.o  
 endif  
 ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)  
 LIBOBJS+=arm-dis.o  
 endif  
   
 ifeq ($(ARCH),ia64)  
 OBJS += ia64-syscall.o  
 endif  
   
 all: $(PROGS) qemu-doc.html  
   
 qemu: $(OBJS)  
         $(CC) $(LDFLAGS) -o $@ $^  $(LIBS)  
 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: vl.o block.o libqemu.a  
         $(CC) -static -Wl,-T,i386-vl.ld -o $@ $^  $(LIBS)  
13    
14  vlmkcow: vlmkcow.o  vlmkcow: vlmkcow.o
15          $(CC) -o $@ $^  $(LIBS)          $(HOST_CC) -o $@ $^  $(LIBS)
   
 depend: $(SRCS)  
         $(CC) -MM $(CFLAGS) $^ 1>.depend  
   
 # libqemu  
   
 libqemu.a: $(LIBOBJS)  
         rm -f $@  
         $(AR) rcs $@ $(LIBOBJS)  
   
 dyngen: dyngen.c  
         $(HOST_CC) -O2 -Wall -g $< -o $@  
   
 translate-$(TARGET_ARCH).o: translate-$(TARGET_ARCH).c gen-op-$(TARGET_ARCH).h opc-$(TARGET_ARCH).h cpu-$(TARGET_ARCH).h  
   
 translate.o: translate.c op-$(TARGET_ARCH).h opc-$(TARGET_ARCH).h cpu-$(TARGET_ARCH).h  
   
 op-$(TARGET_ARCH).h: op-$(TARGET_ARCH).o dyngen  
         ./dyngen -o $@ $<  
   
 opc-$(TARGET_ARCH).h: op-$(TARGET_ARCH).o dyngen  
         ./dyngen -c -o $@ $<  
   
 gen-op-$(TARGET_ARCH).h: op-$(TARGET_ARCH).o dyngen  
         ./dyngen -g -o $@ $<  
   
 op-$(TARGET_ARCH).o: op-$(TARGET_ARCH).c  
         $(CC) $(OP_CFLAGS) $(DEFINES) -c -o $@ $<  
   
 helper-$(TARGET_ARCH).o: helper-$(TARGET_ARCH).c  
         $(CC) $(HELPER_CFLAGS) $(DEFINES) -c -o $@ $<  
   
 op-i386.o: op-i386.c opreg_template.h ops_template.h ops_template_mem.h  
16    
17  op-arm.o: op-arm.c op-arm-template.h  dyngen: dyngen.o
18            $(HOST_CC) -o $@ $^  $(LIBS)
19    
20  %.o: %.c  %.o: %.c
21          $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<          $(HOST_CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
22    
23  clean:  clean:
24          $(MAKE) -C tests clean          rm -f *.o *.a $(TOOLS) dyngen TAGS
25          rm -f *.o  *.a *~ qemu dyngen TAGS          for d in $(TARGET_DIRS); do \
26            make -C $$d $@ || exit 1 ; \
27            done
28    
29  distclean: clean  distclean: clean
30          rm -f config.mak config.h          rm -f config.mak config.h
31    
32  install: $(PROGS)  install: all
33          mkdir -p $(prefix)/bin          mkdir -p $(prefix)/bin
34          install -m 755 -s $(PROGS) $(prefix)/bin          install -m 755 -s $(TOOLS) $(prefix)/bin
35            for d in $(TARGET_DIRS); do \
36            make -C $$d $@ || exit 1 ; \
37            done
38    
39  # various test targets  # various test targets
40  test speed: qemu  test speed: all
41          make -C tests $@          make -C tests $@
42    
43  TAGS:  TAGS:

Legend:
Removed from v.1.45  
changed lines
  Added in v.1.46

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26