Enable compiling the X Server and modules with hidden symbols by default.

  Note that it checks if support for symbol visibility is available by
the compiler, not if it is functional. It may have problems on non x86
architectures.
  To disable the feature, just pass the option "--disable-visibility"
to the X Server configure script.
  Unless using an alternate build schema, drivers built from a git
checkout will use the same "visibility" related CFLAGS used to compile
the X Server.
parent 31285d06
......@@ -504,6 +504,9 @@ AC_ARG_ENABLE(builtin-fonts, AS_HELP_STRING([--enable-builtin-fonts], [Use only
AC_ARG_ENABLE(null-root-cursor, AS_HELP_STRING([--enable-null-root-cursor], [Use an empty root cursor (default: use core cursor)]),
[NULL_ROOT_CURSOR=$enableval],
[NULL_ROOT_CURSOR=no])
AC_ARG_ENABLE(visibility, AC_HELP_STRING([--enable-visibility], [Enable symbol visibility (default: auto)]),
[SYMBOL_VISIBILITY=$enableval],
[SYMBOL_VISIBILITY=auto])
dnl GLX build options
AC_ARG_WITH(mesa-source, AS_HELP_STRING([--with-mesa-source=MESA_SOURCE], [Path to Mesa source tree]),
......@@ -1229,6 +1232,46 @@ if test "x$XORG" = xyes; then
XORG_CFLAGS="$XORGSERVER_CFLAGS -DHAVE_XORG_CONFIG_H"
XORG_LIBS="$COMPOSITE_LIB $FIXES_LIB $XEXTXORG_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $SELINUX_LIB"
dnl ==================================================================
dnl symbol visibility
symbol_visibility=
have_visibility=disabled
if test x$SYMBOL_VISIBILITY != xno; then
AC_MSG_CHECKING(for symbol visibility support)
if test x$GCC = xyes; then
VISIBILITY_CFLAGS="-fvisibility=hidden"
else
AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
if test x$SUNCC = xyes; then
VISIBILITY_CFLAGS="-xldscope=hidden"
else
have_visibility=no
fi
fi
if test x$have_visibility != xno; then
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
AC_TRY_COMPILE(
[#include <X11/Xfuncproto.h>
extern _X_HIDDEN int hidden_int;
extern _X_EXPORT int public_int;
extern _X_HIDDEN int hidden_int_func(void);
extern _X_EXPORT int public_int_func(void);],
[],
have_visibility=yes,
have_visibility=no)
CFLAGS=$save_CFLAGS
fi
AC_MSG_RESULT([$have_visibility])
if test x$have_visibility != xno; then
symbol_visibility=$VISIBILITY_CFLAGS
XORG_CFLAGS="$XORG_CFLAGS $VISIBILITY_CFLAGS"
fi
fi
dnl added to xorg-server.pc
AC_SUBST([symbol_visibility])
dnl ===================================================================
PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0])
SAVE_LIBS=$LIBS
SAVE_CFLAGS=$CFLAGS
......
......@@ -15,5 +15,5 @@ Name: xorg-server
Description: Modular X.Org X Server
Version: @PACKAGE_VERSION@
Requires: pixman-1 pciaccess
Cflags: -I${sdkdir}
Cflags: -I${sdkdir} @symbol_visibility@
Libs: -L${libdir}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment