mirror of https://gitee.com/openkylin/qemu.git
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>
This commit is contained in:
parent
4318e1a690
commit
fa282484b3
132
Makefile.target
132
Makefile.target
|
@ -169,72 +169,6 @@ ifdef CONFIG_LINUX_USER
|
||||||
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
|
VPATH+=:$(SRC_PATH)/linux-user:$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
|
||||||
CPPFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
|
CPPFLAGS+=-I$(SRC_PATH)/linux-user -I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR)
|
||||||
|
|
||||||
ifeq ($(ARCH),i386)
|
|
||||||
ifdef TARGET_GPROF
|
|
||||||
USE_I386_LD=y
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_STATIC
|
|
||||||
USE_I386_LD=y
|
|
||||||
endif
|
|
||||||
ifdef USE_I386_LD
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).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
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),x86_64)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),ppc)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),ppc64)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),s390)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),sparc)
|
|
||||||
# -static is used to avoid g1/g3 usage by the dynamic linker
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),sparc64)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),alpha)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),ia64)
|
|
||||||
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),arm)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),m68k)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),mips)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),mips64)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
# profiling code
|
# profiling code
|
||||||
ifdef TARGET_GPROF
|
ifdef TARGET_GPROF
|
||||||
LDFLAGS+=-p
|
LDFLAGS+=-p
|
||||||
|
@ -304,72 +238,6 @@ ifdef CONFIG_BSD_USER
|
||||||
VPATH+=:$(SRC_PATH)/bsd-user
|
VPATH+=:$(SRC_PATH)/bsd-user
|
||||||
CPPFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH)
|
CPPFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH)
|
||||||
|
|
||||||
ifeq ($(ARCH),i386)
|
|
||||||
ifdef TARGET_GPROF
|
|
||||||
USE_I386_LD=y
|
|
||||||
endif
|
|
||||||
ifdef CONFIG_STATIC
|
|
||||||
USE_I386_LD=y
|
|
||||||
endif
|
|
||||||
ifdef USE_I386_LD
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).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
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),x86_64)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),ppc)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),ppc64)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),s390)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),sparc)
|
|
||||||
# -static is used to avoid g1/g3 usage by the dynamic linker
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),sparc64)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),alpha)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),ia64)
|
|
||||||
LDFLAGS+=-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),arm)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),m68k)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),mips)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(ARCH),mips64)
|
|
||||||
LDFLAGS+=-Wl,-T,$(SRC_PATH)/$(ARCH).ld
|
|
||||||
endif
|
|
||||||
|
|
||||||
obj-y = main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \
|
obj-y = main.o bsdload.o elfload.o mmap.o path.o signal.o strace.o syscall.o \
|
||||||
gdbstub.o gdbstub-xml.o ioport-user.o
|
gdbstub.o gdbstub-xml.o ioport-user.o
|
||||||
obj-y += uaccess.o
|
obj-y += uaccess.o
|
||||||
|
|
|
@ -2042,6 +2042,45 @@ if test "$target_bsd_user" = "yes" ; then
|
||||||
echo "CONFIG_BSD_USER=y" >> $config_mak
|
echo "CONFIG_BSD_USER=y" >> $config_mak
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# generate LDFLAGS for targets
|
||||||
|
|
||||||
|
ldflags=""
|
||||||
|
if test "$target_linux_user" = "yes" -o "$target_linux_user" = "yes" ; then
|
||||||
|
case "$ARCH" in
|
||||||
|
i386)
|
||||||
|
if test "$gprof" = "yes" -o "$static" = "yes" ; then
|
||||||
|
ldflags='-Wl,-T,$(SRC_PATH)/$(ARCH).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'
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
sparc)
|
||||||
|
# -static is used to avoid g1/g3 usage by the dynamic linker
|
||||||
|
ldflags='-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static'
|
||||||
|
;;
|
||||||
|
ia64)
|
||||||
|
ldflags='-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld -static'
|
||||||
|
;;
|
||||||
|
x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64)
|
||||||
|
ldflags='-Wl,-T,$(SRC_PATH)/$(ARCH).ld'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if test "$target_softmmu" = "yes" ; then
|
||||||
|
case "$ARCH" in
|
||||||
|
ia64)
|
||||||
|
ldflags='-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld -static'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$ldflags" != "" ; then
|
||||||
|
echo "LDFLAGS+=$ldflags" >> $config_mak
|
||||||
|
fi
|
||||||
|
|
||||||
echo "/* Automatically generated by configure - do not modify */" > $config_h
|
echo "/* Automatically generated by configure - do not modify */" > $config_h
|
||||||
echo "#include \"../config-host.h\"" >> $config_h
|
echo "#include \"../config-host.h\"" >> $config_h
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue