summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon TURNEY <[email protected]>2014-05-11 14:38:52 +0100
committerJon TURNEY <[email protected]>2014-05-23 15:24:01 +0100
commitff90a8784cf22ada7bba75f90460b063818abda7 (patch)
treec9c83e89685a4925acdbc7158d39995fa0bff445
parente0372239a5b716de21b5f4c7a4a7d8b4a74a51cb (diff)
Fix build for darwin
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 - 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 <[email protected]> Reviewed-by: Jeremy Huddleston Sequoia <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
-rw-r--r--configure.ac44
-rw-r--r--src/egl/main/Makefile.am2
-rw-r--r--src/gallium/Automake.inc8
-rw-r--r--src/gallium/targets/egl-static/Makefile.am2
-rw-r--r--src/gallium/targets/gbm/Makefile.am2
-rw-r--r--src/gallium/targets/opencl/Makefile.am2
-rw-r--r--src/gallium/targets/pipe-loader/Makefile.am2
-rw-r--r--src/glx/Makefile.am2
-rw-r--r--src/mesa/drivers/dri/Makefile.am2
9 files changed, 63 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index 76d13337f9e..675a4a67faa 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
@@ -345,6 +361,28 @@ esac
AC_SUBST([LD_NO_UNDEFINED])
dnl
+dnl Check if linker supports version scripts
+dnl
+AC_MSG_CHECKING([if the linker supports version-scripts])
+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 23207db8ae1..38758a0abdd 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 4519c161c09..70921ecd808 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/gallium/targets/egl-static/Makefile.am b/src/gallium/targets/egl-static/Makefile.am
index 7a2e5552205..bd18f995161 100644
--- a/src/gallium/targets/egl-static/Makefile.am
+++ b/src/gallium/targets/egl-static/Makefile.am
@@ -48,7 +48,9 @@ AM_LDFLAGS = \
-module \
-no-undefined \
-avoid-version \
+if HAVE_LD_VERSION_SCRIPT
-Wl,--version-script=$(top_srcdir)/src/gallium/targets/egl-static/egl.sym \
+endif
$(GC_SECTIONS) \
$(LD_NO_UNDEFINED)
diff --git a/src/gallium/targets/gbm/Makefile.am b/src/gallium/targets/gbm/Makefile.am
index a8945a97f1c..bfc03073b3c 100644
--- a/src/gallium/targets/gbm/Makefile.am
+++ b/src/gallium/targets/gbm/Makefile.am
@@ -67,7 +67,9 @@ gbm_gallium_drm_la_LDFLAGS = \
-module \
-no-undefined \
-avoid-version \
+if HAVE_LD_VERSION_SCRIPT
-Wl,--version-script=$(top_srcdir)/src/gallium/targets/gbm/gbm.sym \
+endif
$(GC_SECTIONS) \
$(LD_NO_UNDEFINED)
diff --git a/src/gallium/targets/opencl/Makefile.am b/src/gallium/targets/opencl/Makefile.am
index ba45aee81c1..f8c591d6281 100644
--- a/src/gallium/targets/opencl/Makefile.am
+++ b/src/gallium/targets/opencl/Makefile.am
@@ -6,7 +6,9 @@ lib@OPENCL_LIBNAME@_la_LDFLAGS = \
$(LLVM_LDFLAGS) \
-no-undefined \
-version-number 1:0 \
+if HAVE_LD_VERSION_SCRIPT
-Wl,--version-script=$(top_srcdir)/src/gallium/targets/opencl/opencl.sym \
+endif
$(GC_SECTIONS) \
$(LD_NO_UNDEFINED)
diff --git a/src/gallium/targets/pipe-loader/Makefile.am b/src/gallium/targets/pipe-loader/Makefile.am
index 328069416d1..93e497f9943 100644
--- a/src/gallium/targets/pipe-loader/Makefile.am
+++ b/src/gallium/targets/pipe-loader/Makefile.am
@@ -47,7 +47,9 @@ AM_LDFLAGS = \
-module \
-no-undefined \
-avoid-version \
+if HAVE_LD_VERSION_SCRIPT
-Wl,--version-script=$(top_srcdir)/src/gallium/targets/pipe-loader/pipe.sym \
+endif
$(GC_SECTIONS) \
$(LD_NO_UNDEFINED)
diff --git a/src/glx/Makefile.am b/src/glx/Makefile.am
index 482d952302d..0cf65e50732 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 e8076120d94..70039f9ad82 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 = \