Commit fa282484b373f4c5751cb46fb2daa8ba0245fe5c
Committed by
Anthony Liguori
1 parent
4318e1a6
generate LDFLAGS for *-linux-user and *-bsd-user in a single place in configure
Remove lots of duplicate code in the process Signed-off-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing
2 changed files
with
39 additions
and
132 deletions
Makefile.target
... | ... | @@ -169,72 +169,6 @@ ifdef CONFIG_LINUX_USER |
169 | 169 | VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) |
170 | 170 | CPPFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) |
171 | 171 | |
172 | -ifeq ($(ARCH),i386) | |
173 | -ifdef TARGET_GPROF | |
174 | -USE_I386_LD=y | |
175 | -endif | |
176 | -ifdef CONFIG_STATIC | |
177 | -USE_I386_LD=y | |
178 | -endif | |
179 | -ifdef USE_I386_LD | |
180 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
181 | -else | |
182 | -# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object | |
183 | -# that the kernel ELF loader considers as an executable. I think this | |
184 | -# is the simplest way to make it self virtualizable! | |
185 | -LDFLAGS+=-Wl,-shared | |
186 | -endif | |
187 | -endif | |
188 | - | |
189 | -ifeq ($(ARCH),x86_64) | |
190 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
191 | -endif | |
192 | - | |
193 | -ifeq ($(ARCH),ppc) | |
194 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
195 | -endif | |
196 | - | |
197 | -ifeq ($(ARCH),ppc64) | |
198 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
199 | -endif | |
200 | - | |
201 | -ifeq ($(ARCH),s390) | |
202 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
203 | -endif | |
204 | - | |
205 | -ifeq ($(ARCH),sparc) | |
206 | -# -static is used to avoid g1/g3 usage by the dynamic linker | |
207 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static | |
208 | -endif | |
209 | - | |
210 | -ifeq ($(ARCH),sparc64) | |
211 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
212 | -endif | |
213 | - | |
214 | -ifeq ($(ARCH),alpha) | |
215 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
216 | -endif | |
217 | - | |
218 | -ifeq ($(ARCH),ia64) | |
219 | -LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
220 | -endif | |
221 | - | |
222 | -ifeq ($(ARCH),arm) | |
223 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
224 | -endif | |
225 | - | |
226 | -ifeq ($(ARCH),m68k) | |
227 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
228 | -endif | |
229 | - | |
230 | -ifeq ($(ARCH),mips) | |
231 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
232 | -endif | |
233 | - | |
234 | -ifeq ($(ARCH),mips64) | |
235 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
236 | -endif | |
237 | - | |
238 | 172 | # profiling code |
239 | 173 | ifdef TARGET_GPROF |
240 | 174 | LDFLAGS+=-p |
... | ... | @@ -304,72 +238,6 @@ ifdef CONFIG_BSD_USER |
304 | 238 | VPATH+=:$(SRC_PATH)/bsd-user |
305 | 239 | CPPFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH) |
306 | 240 | |
307 | -ifeq ($(ARCH),i386) | |
308 | -ifdef TARGET_GPROF | |
309 | -USE_I386_LD=y | |
310 | -endif | |
311 | -ifdef CONFIG_STATIC | |
312 | -USE_I386_LD=y | |
313 | -endif | |
314 | -ifdef USE_I386_LD | |
315 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
316 | -else | |
317 | -# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object | |
318 | -# that the kernel ELF loader considers as an executable. I think this | |
319 | -# is the simplest way to make it self virtualizable! | |
320 | -LDFLAGS+=-Wl,-shared | |
321 | -endif | |
322 | -endif | |
323 | - | |
324 | -ifeq ($(ARCH),x86_64) | |
325 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
326 | -endif | |
327 | - | |
328 | -ifeq ($(ARCH),ppc) | |
329 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
330 | -endif | |
331 | - | |
332 | -ifeq ($(ARCH),ppc64) | |
333 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
334 | -endif | |
335 | - | |
336 | -ifeq ($(ARCH),s390) | |
337 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
338 | -endif | |
339 | - | |
340 | -ifeq ($(ARCH),sparc) | |
341 | -# -static is used to avoid g1/g3 usage by the dynamic linker | |
342 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static | |
343 | -endif | |
344 | - | |
345 | -ifeq ($(ARCH),sparc64) | |
346 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
347 | -endif | |
348 | - | |
349 | -ifeq ($(ARCH),alpha) | |
350 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
351 | -endif | |
352 | - | |
353 | -ifeq ($(ARCH),ia64) | |
354 | -LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
355 | -endif | |
356 | - | |
357 | -ifeq ($(ARCH),arm) | |
358 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
359 | -endif | |
360 | - | |
361 | -ifeq ($(ARCH),m68k) | |
362 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
363 | -endif | |
364 | - | |
365 | -ifeq ($(ARCH),mips) | |
366 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
367 | -endif | |
368 | - | |
369 | -ifeq ($(ARCH),mips64) | |
370 | -LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld | |
371 | -endif | |
372 | - | |
373 | 241 | obj-y = main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \ |
374 | 242 | gdbstub.o gdbstub-xml.o ioport-user.o |
375 | 243 | obj-y += uaccess.o | ... | ... |
configure
... | ... | @@ -2042,6 +2042,45 @@ if test "$target_bsd_user" = "yes" ; then |
2042 | 2042 | echo "CONFIG_BSD_USER=y" >> $config_mak |
2043 | 2043 | fi |
2044 | 2044 | |
2045 | +# generate LDFLAGS for targets | |
2046 | + | |
2047 | +ldflags="" | |
2048 | +if test "$target_linux_user" = "yes" -o "$target_linux_user" = "yes" ; then | |
2049 | + case "$ARCH" in | |
2050 | + i386) | |
2051 | + if test "$gprof" = "yes" -o "$static" = "yes" ; then | |
2052 | + ldflags='-Wl,-T,$(SRC_PATH)/$(ARCH).ld' | |
2053 | + else | |
2054 | + # WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object | |
2055 | + # that the kernel ELF loader considers as an executable. I think this | |
2056 | + # is the simplest way to make it self virtualizable! | |
2057 | + ldflags='-Wl,-shared' | |
2058 | + fi | |
2059 | + ;; | |
2060 | + sparc) | |
2061 | + # -static is used to avoid g1/g3 usage by the dynamic linker | |
2062 | + ldflags='-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static' | |
2063 | + ;; | |
2064 | + ia64) | |
2065 | + ldflags='-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld -static' | |
2066 | + ;; | |
2067 | + x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64) | |
2068 | + ldflags='-Wl,-T,$(SRC_PATH)/$(ARCH).ld' | |
2069 | + ;; | |
2070 | + esac | |
2071 | +fi | |
2072 | +if test "$target_softmmu" = "yes" ; then | |
2073 | + case "$ARCH" in | |
2074 | + ia64) | |
2075 | + ldflags='-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld -static' | |
2076 | + ;; | |
2077 | + esac | |
2078 | +fi | |
2079 | + | |
2080 | +if test "$ldflags" != "" ; then | |
2081 | + echo "LDFLAGS+=$ldflags" >> $config_mak | |
2082 | +fi | |
2083 | + | |
2045 | 2084 | echo "/* Automatically generated by configure - do not modify */" > $config_h |
2046 | 2085 | echo "#include \"../config-host.h\"" >> $config_h |
2047 | 2086 | ... | ... |