diff options
author | Jon TURNEY <[email protected]> | 2014-05-11 14:38:52 +0100 |
---|---|---|
committer | Jon TURNEY <[email protected]> | 2014-05-23 15:24:01 +0100 |
commit | ff90a8784cf22ada7bba75f90460b063818abda7 (patch) | |
tree | c9c83e89685a4925acdbc7158d39995fa0bff445 | |
parent | e0372239a5b716de21b5f4c7a4a7d8b4a74a51cb (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.ac | 44 | ||||
-rw-r--r-- | src/egl/main/Makefile.am | 2 | ||||
-rw-r--r-- | src/gallium/Automake.inc | 8 | ||||
-rw-r--r-- | src/gallium/targets/egl-static/Makefile.am | 2 | ||||
-rw-r--r-- | src/gallium/targets/gbm/Makefile.am | 2 | ||||
-rw-r--r-- | src/gallium/targets/opencl/Makefile.am | 2 | ||||
-rw-r--r-- | src/gallium/targets/pipe-loader/Makefile.am | 2 | ||||
-rw-r--r-- | src/glx/Makefile.am | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/Makefile.am | 2 |
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 = \ |