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 | ... | ... |