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 3 CFLAGS=-Wall -O2 -g
4 4 LDFLAGS=-g
5 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 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 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 20 %.o: %.c
186   - $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
  21 + $(HOST_CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
187 22  
188 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 29 distclean: clean
193 30 rm -f config.mak config.h
194 31  
195   -install: $(PROGS)
  32 +install: all
196 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 39 # various test targets
200   -test speed: qemu
  40 +test speed: all
201 41 make -C tests $@
202 42  
203 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 3 CFLAGS=-Wall -O2 -g
4 4 LDFLAGS=
... ... @@ -8,7 +8,7 @@ TESTS=testclone testsig testthread sha1-i386 test-i386 runcom
8 8 endif
9 9 TESTS+=sha1 test_path
10 10  
11   -QEMU=../qemu
  11 +QEMU=../i386/qemu
12 12  
13 13 all: $(TESTS)
14 14  
... ...