[Mesa-dev] [PATCH] automake: check if the linker supports --dynamic-list

Emil Velikov emil.l.velikov at gmail.com
Fri Sep 5 06:29:08 PDT 2014


On 01/09/14 17:08, Jonathan Gray wrote:
> As older versions of gnu ld did not support --dynamic-list check to see
> if it is supported before using it.  Non gnu linkers such the apple one
> likely lack this option as well.
> 
> Fixes the build on OpenBSD which has binutils 2.15 and 2.17.
> The --dynamic-list option seems to been have introduced sometime after
> binutils 2.17 was released as it is present in 2.18.
> 
Thanks Jonathan.

I've Cc'd this commit to stable and pushed it along side with your st/xvmc one.

-Emil

P.S. Now if you can rework the classic radeon and r200 drivers so that the
common code is build into separate static archive, this will get us pretty low
on symlinks in mesa-git. That's just me day-dreaming :)

> Signed-off-by: Jonathan Gray <jsg at jsg.id.au>
> ---
>  configure.ac                          | 18 ++++++++++++++++++
>  src/gallium/targets/dri/Makefile.am   |  6 +++++-
>  src/gallium/targets/vdpau/Makefile.am |  6 +++++-
>  3 files changed, 28 insertions(+), 2 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index aed2a8b..5214267 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -356,6 +356,24 @@ LDFLAGS=$save_LDFLAGS
>  AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
>  
>  dnl
> +dnl Check if linker supports dynamic list files
> +dnl
> +AC_MSG_CHECKING([if the linker supports --dynamic-list])
> +save_LDFLAGS=$LDFLAGS
> +LDFLAGS="$LDFLAGS -Wl,--dynamic-list=conftest.dyn"
> +cat > conftest.dyn <<EOF
> +{
> +	radeon_drm_winsys_create;
> +};
> +EOF
> +AC_LINK_IFELSE(
> +    [AC_LANG_SOURCE([int main() { return 0;}])],
> +    [have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)],
> +    [have_ld_dynamic_list=no; AC_MSG_RESULT(no)])
> +LDFLAGS=$save_LDFLAGS
> +AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes")
> +
> +dnl
>  dnl compatibility symlinks
>  dnl
>  case "$host_os" in
> diff --git a/src/gallium/targets/dri/Makefile.am b/src/gallium/targets/dri/Makefile.am
> index 70b19b8..1c33a91 100644
> --- a/src/gallium/targets/dri/Makefile.am
> +++ b/src/gallium/targets/dri/Makefile.am
> @@ -26,7 +26,6 @@ gallium_dri_la_LDFLAGS = \
>  	-shrext .so \
>  	-module \
>  	-avoid-version \
> -	-Wl,--dynamic-list=$(top_srcdir)/src/gallium/targets/dri-vdpau.dyn \
>  	$(GC_SECTIONS)
>  
>  if HAVE_LD_VERSION_SCRIPT
> @@ -34,6 +33,11 @@ gallium_dri_la_LDFLAGS += \
>  	-Wl,--version-script=$(top_srcdir)/src/gallium/targets/dri/dri.sym
>  endif # HAVE_LD_VERSION_SCRIPT
>  
> +if HAVE_LD_DYNAMIC_LIST
> +gallium_dri_la_LDFLAGS += \
> +	-Wl,--dynamic-list=$(top_srcdir)/src/gallium/targets/dri-vdpau.dyn
> +endif # HAVE_LD_DYNAMIC_LIST
> +
>  gallium_dri_la_LIBADD = \
>  	$(top_builddir)/src/mesa/libmesagallium.la \
>  	$(top_builddir)/src/mesa/drivers/dri/common/libdricommon.la \
> diff --git a/src/gallium/targets/vdpau/Makefile.am b/src/gallium/targets/vdpau/Makefile.am
> index 6c92cd8..440cf22 100644
> --- a/src/gallium/targets/vdpau/Makefile.am
> +++ b/src/gallium/targets/vdpau/Makefile.am
> @@ -15,7 +15,6 @@ libvdpau_gallium_la_LDFLAGS = \
>  	-module \
>  	-no-undefined \
>  	-version-number $(VDPAU_MAJOR):$(VDPAU_MINOR) \
> -	-Wl,--dynamic-list=$(top_srcdir)/src/gallium/targets/dri-vdpau.dyn \
>  	$(GC_SECTIONS) \
>  	$(LD_NO_UNDEFINED)
>  
> @@ -24,6 +23,11 @@ libvdpau_gallium_la_LDFLAGS += \
>  	-Wl,--version-script=$(top_srcdir)/src/gallium/targets/vdpau/vdpau.sym
>  endif # HAVE_LD_VERSION_SCRIPT
>  
> +if HAVE_LD_DYNAMIC_LIST
> +libvdpau_gallium_la_LDFLAGS += \
> +	-Wl,--dynamic-list=$(top_srcdir)/src/gallium/targets/dri-vdpau.dyn
> +endif # HAVE_LD_DYNAMIC_LIST
> +
>  libvdpau_gallium_la_LIBADD = \
>  	$(top_builddir)/src/gallium/state_trackers/vdpau/libvdpautracker.la \
>  	$(top_builddir)/src/gallium/auxiliary/libgallium.la \
> 



More information about the mesa-dev mailing list