[Mesa-dev] [PATCH 1/3] Fix build for darwin
Emil Velikov
emil.l.velikov at gmail.com
Fri May 23 06:36:48 PDT 2014
On 21/05/14 14:02, Jon TURNEY wrote:
> Fix build for darwin, when ./configured --disable-driglx-direct
>
> - darwin ld doesn't support -Bsymbolic or --version-script, so check if ld
> supports those options before using them
There are four move cases that can use HAVE_LD_VERSION_SCRIPT. First one is
missing "\" the fix of which is floating on the ML.
src/gallium/targets/egl-static/Makefile.am
src/gallium/targets/gbm/Makefile.am
src/gallium/targets/opencl/Makefile.am
src/gallium/targets/pipe-loader/Makefile.am
> - define GLX_ALIAS_UNSUPPORTED as config/darwin used to, as aliasing of non-weak
> symbols isn't supported
> - default to -with-dri-drivers=swrast
>
> v2:
> Use -Wl,-Bsymbolic, as before, not -Bsymbolic
> Test that ld --version-script works, rather than just looking for it in ld --help
> Don't use -Wl,--no-undefined on darwin, either
>
> Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
> Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
> ---
> configure.ac | 46 +++++++++++++++++++++++++++++++++++++++-
> src/egl/main/Makefile.am | 2 +-
> src/gallium/Automake.inc | 8 +++++++
> src/glx/Makefile.am | 2 +-
> src/mesa/drivers/dri/Makefile.am | 2 +-
> 5 files changed, 56 insertions(+), 4 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 4e4d761..bc3a654 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -316,6 +316,22 @@ if test "x$enable_debug" = xyes; then
> fi
>
> dnl
> +dnl Check if linker supports -Bsymbolic
> +dnl
> +save_LDFLAGS=$LDFLAGS
> +LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
> +AC_MSG_CHECKING([if ld supports -Bsymbolic])
> +AC_LINK_IFELSE(
> + [AC_LANG_SOURCE([int main() { return 0;}])],
> + [AC_MSG_RESULT([yes])
> + BSYMBOLIC="-Wl,-Bsymbolic";],
> + [AC_MSG_RESULT([no])
> + BSYMBOLIC="";])
> +LDFLAGS=$save_LDFLAGS
> +
> +AC_SUBST([BSYMBOLIC])
> +
> +dnl
> dnl Check if linker supports garbage collection
> dnl
> save_LDFLAGS=$LDFLAGS
> @@ -336,7 +352,7 @@ dnl OpenBSD does not have DT_NEEDED entries for libc by design
> dnl so when these flags are passed to ld via libtool the checks will fail
> dnl
> case "$host_os" in
> -openbsd*)
> +openbsd*|darwin*)
> LD_NO_UNDEFINED="" ;;
> *)
> LD_NO_UNDEFINED="-Wl,--no-undefined" ;;
> @@ -345,6 +361,28 @@ esac
> AC_SUBST([LD_NO_UNDEFINED])
>
> dnl
> +dnl Check if linker supports version scripts
> +dnl
> +AC_MSG_CHECKING([if libraries can be versioned])
We use version scripts only to limit the exported symbols. The following looks
better imho, but it's optional.
AC_MSG_CHECKING([if the linker supports version-scripts])
-Emil
> +save_LDFLAGS=$LDFLAGS
> +LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
> +cat > conftest.map <<EOF
> +VERSION_1 {
> + global:
> + main;
> +
> + local:
> + *;
> +};
> +EOF
> +AC_LINK_IFELSE(
> + [AC_LANG_SOURCE([int main() { return 0;}])],
> + [have_ld_version_script=yes;AC_MSG_RESULT(yes)],
> + [have_ld_version_script=no; AC_MSG_RESULT(no)])
> +LDFLAGS=$save_LDFLAGS
> +AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
> +
> +dnl
> dnl compatibility symlinks
> dnl
> case "$host_os" in
> @@ -1043,6 +1081,12 @@ if test "x$enable_dri" = xyes; then
> with_dri_drivers="swrast"
> fi
> ;;
> + darwin*)
> + DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DGLX_ALIAS_UNSUPPORTED"
> + if test "x$with_dri_drivers" = "xyes"; then
> + with_dri_drivers="swrast"
> + fi
> + ;;
> esac
>
> # default drivers
> diff --git a/src/egl/main/Makefile.am b/src/egl/main/Makefile.am
> index 23207db..38758a0 100644
> --- a/src/egl/main/Makefile.am
> +++ b/src/egl/main/Makefile.am
> @@ -75,7 +75,7 @@ libEGL_la_LIBADD = \
> libEGL_la_LDFLAGS = \
> -no-undefined \
> -version-number 1:0 \
> - -Wl,-Bsymbolic \
> + $(BSYMBOLIC) \
> $(GC_SECTIONS) \
> $(LD_NO_UNDEFINED)
>
> diff --git a/src/gallium/Automake.inc b/src/gallium/Automake.inc
> index 4519c16..70921ec 100644
> --- a/src/gallium/Automake.inc
> +++ b/src/gallium/Automake.inc
> @@ -56,7 +56,9 @@ GALLIUM_DRI_LINKER_FLAGS = \
> -shrext .so \
> -module \
> -avoid-version \
> +if HAVE_LD_VERSION_SCRIPT
> -Wl,--version-script=$(top_srcdir)/src/gallium/targets/dri.sym \
> +endif
> $(GC_SECTIONS)
>
> GALLIUM_VDPAU_LINKER_FLAGS = \
> @@ -64,7 +66,9 @@ GALLIUM_VDPAU_LINKER_FLAGS = \
> -module \
> -no-undefined \
> -version-number $(VDPAU_MAJOR):$(VDPAU_MINOR) \
> +if HAVE_LD_VERSION_SCRIPT
> -Wl,--version-script=$(top_srcdir)/src/gallium/targets/vdpau.sym \
> +endif
> $(GC_SECTIONS) \
> $(LD_NO_UNDEFINED)
>
> @@ -73,7 +77,9 @@ GALLIUM_XVMC_LINKER_FLAGS = \
> -module \
> -no-undefined \
> -version-number $(XVMC_MAJOR):$(XVMC_MINOR) \
> +if HAVE_LD_VERSION_SCRIPT
> -Wl,--version-script=$(top_srcdir)/src/gallium/targets/xvmc.sym \
> +endif
> $(GC_SECTIONS) \
> $(LD_NO_UNDEFINED)
>
> @@ -82,7 +88,9 @@ GALLIUM_OMX_LINKER_FLAGS = \
> -module \
> -no-undefined \
> -avoid-version \
> +if HAVE_LD_VERSION_SCRIPT
> -Wl,--version-script=$(top_srcdir)/src/gallium/targets/omx.sym \
> +endif
> $(GC_SECTIONS) \
> $(LD_NO_UNDEFINED)
>
> diff --git a/src/glx/Makefile.am b/src/glx/Makefile.am
> index 482d952..0cf65e5 100644
> --- a/src/glx/Makefile.am
> +++ b/src/glx/Makefile.am
> @@ -111,7 +111,7 @@ GL_LIBS = \
> GL_LDFLAGS = \
> -no-undefined \
> -version-number 1:2 \
> - -Wl,-Bsymbolic \
> + $(BSYMBOLIC) \
> $(GC_SECTIONS) \
> $(LD_NO_UNDEFINED)
>
> diff --git a/src/mesa/drivers/dri/Makefile.am b/src/mesa/drivers/dri/Makefile.am
> index e807612..70039f9 100644
> --- a/src/mesa/drivers/dri/Makefile.am
> +++ b/src/mesa/drivers/dri/Makefile.am
> @@ -52,7 +52,7 @@ nodist_EXTRA_mesa_dri_drivers_la_SOURCES = dummy.cpp
> mesa_dri_drivers_la_SOURCES =
> mesa_dri_drivers_la_LDFLAGS = \
> -module -avoid-version -shared -shrext .so \
> - -Wl,-Bsymbolic \
> + $(BSYMBOLIC) \
> $(GC_SECTIONS) \
> $()
> mesa_dri_drivers_la_LIBADD = \
>
More information about the mesa-dev
mailing list