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.tur...@dronecode.org.uk> > Reviewed-by: Jeremy Huddleston Sequoia <jerem...@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 = \ > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev