Commit 626df76abbd6f74cf0b7df209671982a463c249d

Authored by bellard
1 parent abcd5da7

build all targets at the same time


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@352 c046a42c-6fe2-441c-8c8c-71466251a162
Makefile
1 -include config.mak 1 +include config-host.mak
2 2
3 CFLAGS=-Wall -O2 -g 3 CFLAGS=-Wall -O2 -g
4 LDFLAGS=-g 4 LDFLAGS=-g
5 LIBS= 5 LIBS=
6 -DEFINES=-DHAVE_BYTESWAP_H  
7 -HELPER_CFLAGS=$(CFLAGS)  
8 -PROGS=qemu  
9 -  
10 -ifdef CONFIG_STATIC  
11 -LDFLAGS+=-static  
12 -endif  
13 -  
14 -ifeq ($(ARCH),i386)  
15 -CFLAGS+=-fomit-frame-pointer  
16 -OP_CFLAGS=$(CFLAGS) -mpreferred-stack-boundary=2  
17 -ifeq ($(HAVE_GCC3_OPTIONS),yes)  
18 -OP_CFLAGS+= -falign-functions=0  
19 -else  
20 -OP_CFLAGS+= -malign-functions=0  
21 -endif  
22 -ifdef TARGET_GPROF  
23 -LDFLAGS+=-Wl,-T,i386.ld  
24 -else  
25 -# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object  
26 -# that the kernel ELF loader considers as an executable. I think this  
27 -# is the simplest way to make it self virtualizable!  
28 -LDFLAGS+=-Wl,-shared  
29 -endif  
30 -ifeq ($(TARGET_ARCH), i386)  
31 -PROGS+=vl vlmkcow  
32 -endif  
33 -endif  
34 -  
35 -ifeq ($(ARCH),ppc)  
36 -OP_CFLAGS=$(CFLAGS)  
37 -LDFLAGS+=-Wl,-T,ppc.ld  
38 -endif  
39 -  
40 -ifeq ($(ARCH),s390)  
41 -OP_CFLAGS=$(CFLAGS)  
42 -LDFLAGS+=-Wl,-T,s390.ld  
43 -endif  
44 -  
45 -ifeq ($(ARCH),sparc)  
46 -CFLAGS+=-m32 -ffixed-g1 -ffixed-g2 -ffixed-g3 -ffixed-g6  
47 -LDFLAGS+=-m32  
48 -OP_CFLAGS=$(CFLAGS) -fno-delayed-branch -ffixed-i0  
49 -HELPER_CFLAGS=$(CFLAGS) -ffixed-i0 -mflat  
50 -# -static is used to avoid g1/g3 usage by the dynamic linker  
51 -LDFLAGS+=-Wl,-T,sparc.ld -static  
52 -endif  
53 -  
54 -ifeq ($(ARCH),sparc64)  
55 -CFLAGS+=-m64 -ffixed-g1 -ffixed-g2 -ffixed-g3 -ffixed-g6  
56 -LDFLAGS+=-m64  
57 -OP_CFLAGS=$(CFLAGS) -fno-delayed-branch -ffixed-i0  
58 -endif  
59 -  
60 -ifeq ($(ARCH),alpha)  
61 -# -msmall-data is not used because we want two-instruction relocations  
62 -# for the constant constructions  
63 -OP_CFLAGS=-Wall -O2 -g  
64 -# Ensure there's only a single GP  
65 -CFLAGS += -msmall-data  
66 -LDFLAGS+=-Wl,-T,alpha.ld  
67 -endif  
68 -  
69 -ifeq ($(ARCH),ia64)  
70 -OP_CFLAGS=$(CFLAGS)  
71 -endif  
72 -  
73 -ifeq ($(ARCH),arm)  
74 -OP_CFLAGS=$(CFLAGS) -mno-sched-prolog  
75 -LDFLAGS+=-Wl,-T,arm.ld  
76 -endif  
77 -  
78 -ifeq ($(HAVE_GCC3_OPTIONS),yes)  
79 -# very important to generate a return at the end of every operation  
80 -OP_CFLAGS+=-fno-reorder-blocks -fno-optimize-sibling-calls  
81 -endif  
82 -  
83 -#########################################################  
84 -  
85 DEFINES+=-D_GNU_SOURCE 6 DEFINES+=-D_GNU_SOURCE
86 -LIBS+=-lm  
87 -  
88 -# profiling code  
89 -ifdef TARGET_GPROF  
90 -LDFLAGS+=-p  
91 -main.o: CFLAGS+=-p  
92 -endif  
93 -  
94 -OBJS= elfload.o main.o syscall.o mmap.o signal.o path.o  
95 -ifeq ($(TARGET_ARCH), i386)  
96 -OBJS+= vm86.o  
97 -endif  
98 -SRCS:= $(OBJS:.o=.c)  
99 -OBJS+= libqemu.a  
100 -  
101 -# cpu emulator library  
102 -LIBOBJS=thunk.o exec.o translate.o cpu-exec.o gdbstub.o  
103 -  
104 -ifeq ($(TARGET_ARCH), i386)  
105 -LIBOBJS+=translate-i386.o op-i386.o helper-i386.o  
106 -endif  
107 -ifeq ($(TARGET_ARCH), arm)  
108 -LIBOBJS+=translate-arm.o op-arm.o  
109 -endif  
110 -  
111 -# NOTE: the disassembler code is only needed for debugging  
112 -LIBOBJS+=disas.o  
113 -ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)  
114 -LIBOBJS+=i386-dis.o  
115 -endif  
116 -ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)  
117 -LIBOBJS+=alpha-dis.o  
118 -endif  
119 -ifeq ($(findstring ppc, $(TARGET_ARCH) $(ARCH)),ppc)  
120 -LIBOBJS+=ppc-dis.o  
121 -endif  
122 -ifeq ($(findstring sparc, $(TARGET_ARCH) $(ARCH)),sparc)  
123 -LIBOBJS+=sparc-dis.o  
124 -endif  
125 -ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)  
126 -LIBOBJS+=arm-dis.o  
127 -endif  
128 -  
129 -ifeq ($(ARCH),ia64)  
130 -OBJS += ia64-syscall.o  
131 -endif  
132 -  
133 -all: $(PROGS) qemu-doc.html 7 +TOOLS=vlmkcow
134 8
135 -qemu: $(OBJS)  
136 - $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)  
137 -ifeq ($(ARCH),alpha)  
138 -# Mark as 32 bit binary, i. e. it will be mapped into the low 31 bit of  
139 -# the address space (31 bit so sign extending doesn't matter)  
140 - echo -ne '\001\000\000\000' | dd of=qemu bs=1 seek=48 count=4 conv=notrunc  
141 -endif  
142 -  
143 -# must use static linking to avoid leaving stuff in virtual address space  
144 -vl: vl.o block.o libqemu.a  
145 - $(CC) -static -Wl,-T,i386-vl.ld -o $@ $^ $(LIBS) 9 +all: dyngen $(TOOLS) qemu-doc.html
  10 + for d in $(TARGET_DIRS); do \
  11 + make -C $$d $@ || exit 1 ; \
  12 + done
146 13
147 vlmkcow: vlmkcow.o 14 vlmkcow: vlmkcow.o
148 - $(CC) -o $@ $^ $(LIBS)  
149 -  
150 -depend: $(SRCS)  
151 - $(CC) -MM $(CFLAGS) $^ 1>.depend  
152 -  
153 -# libqemu  
154 -  
155 -libqemu.a: $(LIBOBJS)  
156 - rm -f $@  
157 - $(AR) rcs $@ $(LIBOBJS)  
158 -  
159 -dyngen: dyngen.c  
160 - $(HOST_CC) -O2 -Wall -g $< -o $@  
161 -  
162 -translate-$(TARGET_ARCH).o: translate-$(TARGET_ARCH).c gen-op-$(TARGET_ARCH).h opc-$(TARGET_ARCH).h cpu-$(TARGET_ARCH).h  
163 -  
164 -translate.o: translate.c op-$(TARGET_ARCH).h opc-$(TARGET_ARCH).h cpu-$(TARGET_ARCH).h  
165 -  
166 -op-$(TARGET_ARCH).h: op-$(TARGET_ARCH).o dyngen  
167 - ./dyngen -o $@ $<  
168 -  
169 -opc-$(TARGET_ARCH).h: op-$(TARGET_ARCH).o dyngen  
170 - ./dyngen -c -o $@ $<  
171 -  
172 -gen-op-$(TARGET_ARCH).h: op-$(TARGET_ARCH).o dyngen  
173 - ./dyngen -g -o $@ $<  
174 -  
175 -op-$(TARGET_ARCH).o: op-$(TARGET_ARCH).c  
176 - $(CC) $(OP_CFLAGS) $(DEFINES) -c -o $@ $<  
177 -  
178 -helper-$(TARGET_ARCH).o: helper-$(TARGET_ARCH).c  
179 - $(CC) $(HELPER_CFLAGS) $(DEFINES) -c -o $@ $<  
180 -  
181 -op-i386.o: op-i386.c opreg_template.h ops_template.h ops_template_mem.h 15 + $(HOST_CC) -o $@ $^ $(LIBS)
182 16
183 -op-arm.o: op-arm.c op-arm-template.h 17 +dyngen: dyngen.o
  18 + $(HOST_CC) -o $@ $^ $(LIBS)
184 19
185 %.o: %.c 20 %.o: %.c
186 - $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $< 21 + $(HOST_CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
187 22
188 clean: 23 clean:
189 - $(MAKE) -C tests clean  
190 - rm -f *.o *.a *~ qemu dyngen TAGS 24 + rm -f *.o *.a $(TOOLS) dyngen TAGS
  25 + for d in $(TARGET_DIRS); do \
  26 + make -C $$d $@ || exit 1 ; \
  27 + done
191 28
192 distclean: clean 29 distclean: clean
193 rm -f config.mak config.h 30 rm -f config.mak config.h
194 31
195 -install: $(PROGS) 32 +install: all
196 mkdir -p $(prefix)/bin 33 mkdir -p $(prefix)/bin
197 - install -m 755 -s $(PROGS) $(prefix)/bin 34 + install -m 755 -s $(TOOLS) $(prefix)/bin
  35 + for d in $(TARGET_DIRS); do \
  36 + make -C $$d $@ || exit 1 ; \
  37 + done
198 38
199 # various test targets 39 # various test targets
200 -test speed: qemu 40 +test speed: all
201 make -C tests $@ 41 make -C tests $@
202 42
203 TAGS: 43 TAGS:
Makefile.target 0 โ†’ 100644
  1 +include config.mak
  2 +
  3 +VPATH=$(SRC_PATH)
  4 +CFLAGS=-Wall -O2 -g
  5 +LDFLAGS=-g
  6 +LIBS=
  7 +DEFINES=-I.
  8 +HELPER_CFLAGS=$(CFLAGS)
  9 +DYNGEN=../dyngen
  10 +ifndef CONFIG_SOFTMMU
  11 +PROGS=qemu
  12 +endif
  13 +
  14 +ifdef CONFIG_STATIC
  15 +LDFLAGS+=-static
  16 +endif
  17 +
  18 +ifeq ($(ARCH),i386)
  19 +CFLAGS+=-fomit-frame-pointer
  20 +OP_CFLAGS=$(CFLAGS) -mpreferred-stack-boundary=2
  21 +ifeq ($(HAVE_GCC3_OPTIONS),yes)
  22 +OP_CFLAGS+= -falign-functions=0
  23 +else
  24 +OP_CFLAGS+= -malign-functions=0
  25 +endif
  26 +ifdef TARGET_GPROF
  27 +LDFLAGS+=-Wl,-T,$(SRC_PATH)/i386.ld
  28 +else
  29 +# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
  30 +# that the kernel ELF loader considers as an executable. I think this
  31 +# is the simplest way to make it self virtualizable!
  32 +LDFLAGS+=-Wl,-shared
  33 +endif
  34 +ifeq ($(TARGET_ARCH), i386)
  35 +PROGS+=vl
  36 +endif
  37 +endif
  38 +
  39 +ifeq ($(ARCH),ppc)
  40 +OP_CFLAGS=$(CFLAGS)
  41 +LDFLAGS+=-Wl,-T,$(SRC_PATH)/ppc.ld
  42 +endif
  43 +
  44 +ifeq ($(ARCH),s390)
  45 +OP_CFLAGS=$(CFLAGS)
  46 +LDFLAGS+=-Wl,-T,$(SRC_PATH)/s390.ld
  47 +endif
  48 +
  49 +ifeq ($(ARCH),sparc)
  50 +CFLAGS+=-m32 -ffixed-g1 -ffixed-g2 -ffixed-g3 -ffixed-g6
  51 +LDFLAGS+=-m32
  52 +OP_CFLAGS=$(CFLAGS) -fno-delayed-branch -ffixed-i0
  53 +HELPER_CFLAGS=$(CFLAGS) -ffixed-i0 -mflat
  54 +# -static is used to avoid g1/g3 usage by the dynamic linker
  55 +LDFLAGS+=-Wl,-T,$(SRC_PATH)/sparc.ld -static
  56 +endif
  57 +
  58 +ifeq ($(ARCH),sparc64)
  59 +CFLAGS+=-m64 -ffixed-g1 -ffixed-g2 -ffixed-g3 -ffixed-g6
  60 +LDFLAGS+=-m64
  61 +OP_CFLAGS=$(CFLAGS) -fno-delayed-branch -ffixed-i0
  62 +endif
  63 +
  64 +ifeq ($(ARCH),alpha)
  65 +# -msmall-data is not used because we want two-instruction relocations
  66 +# for the constant constructions
  67 +OP_CFLAGS=-Wall -O2 -g
  68 +# Ensure there's only a single GP
  69 +CFLAGS += -msmall-data
  70 +LDFLAGS+=-Wl,-T,$(SRC_PATH)/alpha.ld
  71 +endif
  72 +
  73 +ifeq ($(ARCH),ia64)
  74 +OP_CFLAGS=$(CFLAGS)
  75 +endif
  76 +
  77 +ifeq ($(ARCH),arm)
  78 +OP_CFLAGS=$(CFLAGS) -mno-sched-prolog
  79 +LDFLAGS+=-Wl,-T,$(SRC_PATH)/arm.ld
  80 +endif
  81 +
  82 +ifeq ($(HAVE_GCC3_OPTIONS),yes)
  83 +# very important to generate a return at the end of every operation
  84 +OP_CFLAGS+=-fno-reorder-blocks -fno-optimize-sibling-calls
  85 +endif
  86 +
  87 +#########################################################
  88 +
  89 +DEFINES+=-D_GNU_SOURCE
  90 +LIBS+=-lm
  91 +
  92 +# profiling code
  93 +ifdef TARGET_GPROF
  94 +LDFLAGS+=-p
  95 +main.o: CFLAGS+=-p
  96 +endif
  97 +
  98 +OBJS= elfload.o main.o syscall.o mmap.o signal.o path.o
  99 +ifeq ($(TARGET_ARCH), i386)
  100 +OBJS+= vm86.o
  101 +endif
  102 +SRCS:= $(OBJS:.o=.c)
  103 +OBJS+= libqemu.a
  104 +
  105 +# cpu emulator library
  106 +LIBOBJS=thunk.o exec.o translate.o cpu-exec.o gdbstub.o
  107 +
  108 +ifeq ($(TARGET_ARCH), i386)
  109 +LIBOBJS+=translate-i386.o op-i386.o helper-i386.o helper2-i386.o
  110 +endif
  111 +ifeq ($(TARGET_ARCH), arm)
  112 +LIBOBJS+=translate-arm.o op-arm.o
  113 +endif
  114 +
  115 +# NOTE: the disassembler code is only needed for debugging
  116 +LIBOBJS+=disas.o
  117 +ifeq ($(findstring i386, $(TARGET_ARCH) $(ARCH)),i386)
  118 +LIBOBJS+=i386-dis.o
  119 +endif
  120 +ifeq ($(findstring alpha, $(TARGET_ARCH) $(ARCH)),alpha)
  121 +LIBOBJS+=alpha-dis.o
  122 +endif
  123 +ifeq ($(findstring ppc, $(TARGET_ARCH) $(ARCH)),ppc)
  124 +LIBOBJS+=ppc-dis.o
  125 +endif
  126 +ifeq ($(findstring sparc, $(TARGET_ARCH) $(ARCH)),sparc)
  127 +LIBOBJS+=sparc-dis.o
  128 +endif
  129 +ifeq ($(findstring arm, $(TARGET_ARCH) $(ARCH)),arm)
  130 +LIBOBJS+=arm-dis.o
  131 +endif
  132 +
  133 +ifeq ($(ARCH),ia64)
  134 +OBJS += ia64-syscall.o
  135 +endif
  136 +
  137 +all: $(PROGS) qemu-doc.html
  138 +
  139 +qemu: $(OBJS)
  140 + $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
  141 +ifeq ($(ARCH),alpha)
  142 +# Mark as 32 bit binary, i. e. it will be mapped into the low 31 bit of
  143 +# the address space (31 bit so sign extending doesn't matter)
  144 + echo -ne '\001\000\000\000' | dd of=qemu bs=1 seek=48 count=4 conv=notrunc
  145 +endif
  146 +
  147 +# must use static linking to avoid leaving stuff in virtual address space
  148 +VL_OBJS=vl.o block.o vga.o
  149 +ifdef CONFIG_SDL
  150 +VL_OBJS+=sdl.o
  151 +SDL_LIBS+=-L/usr/X11R6/lib -lX11 -lXext -lXv -ldl
  152 +endif
  153 +
  154 +vl: $(VL_OBJS) libqemu.a
  155 + $(CC) -static -Wl,-T,$(SRC_PATH)/i386-vl.ld -o $@ $^ $(LIBS) $(SDL_LIBS)
  156 +
  157 +sdl.o: sdl.c
  158 + $(CC) $(CFLAGS) $(DEFINES) $(SDL_CFLAGS) -c -o $@ $<
  159 +
  160 +depend: $(SRCS)
  161 + $(CC) -MM $(CFLAGS) $^ 1>.depend
  162 +
  163 +# libqemu
  164 +
  165 +libqemu.a: $(LIBOBJS)
  166 + rm -f $@
  167 + $(AR) rcs $@ $(LIBOBJS)
  168 +
  169 +translate-$(TARGET_ARCH).o: translate-$(TARGET_ARCH).c gen-op-$(TARGET_ARCH).h opc-$(TARGET_ARCH).h cpu-$(TARGET_ARCH).h
  170 +
  171 +translate.o: translate.c op-$(TARGET_ARCH).h opc-$(TARGET_ARCH).h cpu-$(TARGET_ARCH).h
  172 +
  173 +op-$(TARGET_ARCH).h: op-$(TARGET_ARCH).o $(DYNGEN)
  174 + $(DYNGEN) -o $@ $<
  175 +
  176 +opc-$(TARGET_ARCH).h: op-$(TARGET_ARCH).o $(DYNGEN)
  177 + $(DYNGEN) -c -o $@ $<
  178 +
  179 +gen-op-$(TARGET_ARCH).h: op-$(TARGET_ARCH).o $(DYNGEN)
  180 + $(DYNGEN) -g -o $@ $<
  181 +
  182 +op-$(TARGET_ARCH).o: op-$(TARGET_ARCH).c
  183 + $(CC) $(OP_CFLAGS) $(DEFINES) -c -o $@ $<
  184 +
  185 +helper-$(TARGET_ARCH).o: helper-$(TARGET_ARCH).c
  186 + $(CC) $(HELPER_CFLAGS) $(DEFINES) -c -o $@ $<
  187 +
  188 +op-i386.o: op-i386.c opreg_template.h ops_template.h ops_template_mem.h ops_mem.h
  189 +
  190 +op-arm.o: op-arm.c op-arm-template.h
  191 +
  192 +%.o: %.c
  193 + $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
  194 +
  195 +clean:
  196 + rm -f *.o *.a *~ $(PROGS) \
  197 + gen-op-$(TARGET_ARCH).h opc-$(TARGET_ARCH).h op-$(TARGET_ARCH).h
  198 +
  199 +ifneq ($(wildcard .depend),)
  200 +include .depend
  201 +endif
tests/Makefile
1 -include ../config.mak 1 +include ../config-host.mak
2 2
3 CFLAGS=-Wall -O2 -g 3 CFLAGS=-Wall -O2 -g
4 LDFLAGS= 4 LDFLAGS=
@@ -8,7 +8,7 @@ TESTS=testclone testsig testthread sha1-i386 test-i386 runcom @@ -8,7 +8,7 @@ TESTS=testclone testsig testthread sha1-i386 test-i386 runcom
8 endif 8 endif
9 TESTS+=sha1 test_path 9 TESTS+=sha1 test_path
10 10
11 -QEMU=../qemu 11 +QEMU=../i386/qemu
12 12
13 all: $(TESTS) 13 all: $(TESTS)
14 14