1085.1.4
by Monty Taylor
pandora-build v1 |
1 |
dnl Copyright (C) 2005, 2008 Free Software Foundation, Inc. |
1259.2.1
by Monty Taylor
Updates to pandora-build visibility settings. |
2 |
dnl Copyright (C) 2009 Monty Taylor |
1085.1.4
by Monty Taylor
pandora-build v1 |
3 |
dnl This file is free software; the Free Software Foundation |
4 |
dnl gives unlimited permission to copy and/or distribute it, |
|
5 |
dnl with or without modifications, as long as this notice is preserved. |
|
6 |
||
7 |
dnl From Bruno Haible. |
|
8 |
||
9 |
dnl Tests whether the compiler supports the command-line option |
|
10 |
dnl -fvisibility=hidden and the function and variable attributes |
|
11 |
dnl __attribute__((__visibility__("hidden"))) and |
|
12 |
dnl __attribute__((__visibility__("default"))). |
|
13 |
dnl Does *not* test for __visibility__("protected") - which has tricky |
|
14 |
dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on |
|
15 |
dnl MacOS X. |
|
16 |
dnl Does *not* test for __visibility__("internal") - which has processor |
|
17 |
dnl dependent semantics. |
|
18 |
dnl Does *not* test for #pragma GCC visibility push(hidden) - which is |
|
19 |
dnl "really only recommended for legacy code". |
|
20 |
dnl Set the variable CFLAG_VISIBILITY. |
|
21 |
dnl Defines and sets the variable HAVE_VISIBILITY. |
|
22 |
||
1724.1.1
by Monty Taylor
Rearranged how we set -fvisibility, allowing us to turn it on on a |
23 |
AC_DEFUN([PANDORA_CHECK_VISIBILITY], |
1085.1.4
by Monty Taylor
pandora-build v1 |
24 |
[
|
25 |
AC_REQUIRE([AC_PROG_CC]) |
|
1259.2.1
by Monty Taylor
Updates to pandora-build visibility settings. |
26 |
AC_REQUIRE([PANDORA_PLATFORM]) |
1085.1.4
by Monty Taylor
pandora-build v1 |
27 |
CFLAG_VISIBILITY= |
28 |
HAVE_VISIBILITY=0 |
|
1259.2.1
by Monty Taylor
Updates to pandora-build visibility settings. |
29 |
AS_IF([test -n "$GCC"],[ |
1085.1.4
by Monty Taylor
pandora-build v1 |
30 |
AC_MSG_CHECKING([for simple visibility declarations]) |
31 |
AC_CACHE_VAL([gl_cv_cc_visibility], [ |
|
32 |
gl_save_CFLAGS="$CFLAGS" |
|
33 |
CFLAGS="$CFLAGS -fvisibility=hidden" |
|
34 |
AC_TRY_COMPILE( |
|
35 |
[extern __attribute__((__visibility__("hidden"))) int hiddenvar; |
|
36 |
extern __attribute__((__visibility__("default"))) int exportedvar; |
|
37 |
extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); |
|
38 |
extern __attribute__((__visibility__("default"))) int exportedfunc (void);], |
|
39 |
[],
|
|
40 |
[gl_cv_cc_visibility=yes], |
|
41 |
[gl_cv_cc_visibility=no]) |
|
42 |
CFLAGS="$gl_save_CFLAGS"]) |
|
43 |
AC_MSG_RESULT([$gl_cv_cc_visibility]) |
|
44 |
if test $gl_cv_cc_visibility = yes; then |
|
45 |
CFLAG_VISIBILITY="-fvisibility=hidden" |
|
1724.1.1
by Monty Taylor
Rearranged how we set -fvisibility, allowing us to turn it on on a |
46 |
NO_VISIBILITY="-fvisibility=default" |
1085.1.4
by Monty Taylor
pandora-build v1 |
47 |
HAVE_VISIBILITY=1 |
48 |
fi
|
|
1259.2.1
by Monty Taylor
Updates to pandora-build visibility settings. |
49 |
])
|
50 |
AS_IF([test "x$SUNCC" = "xyes"],[ |
|
51 |
CFLAG_VISIBILITY="-xldscope=hidden" |
|
1724.1.1
by Monty Taylor
Rearranged how we set -fvisibility, allowing us to turn it on on a |
52 |
NO_VISIBILITY="-xldscope=global" |
1259.2.1
by Monty Taylor
Updates to pandora-build visibility settings. |
53 |
HAVE_VISIBILITY=1 |
54 |
])
|
|
1085.1.4
by Monty Taylor
pandora-build v1 |
55 |
AC_SUBST([CFLAG_VISIBILITY]) |
1724.1.1
by Monty Taylor
Rearranged how we set -fvisibility, allowing us to turn it on on a |
56 |
AC_SUBST([NO_VISIBILITY]) |
1085.1.4
by Monty Taylor
pandora-build v1 |
57 |
AC_SUBST([HAVE_VISIBILITY]) |
58 |
AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY], |
|
59 |
[Define to 1 or 0, depending whether the compiler supports simple visibility declarations.]) |
|
60 |
])
|
|
1724.1.1
by Monty Taylor
Rearranged how we set -fvisibility, allowing us to turn it on on a |
61 |
|
62 |
AC_DEFUN([PANDORA_ENABLE_VISIBILITY],[ |
|
63 |
AC_REQUIRE([PANDORA_CHECK_VISIBILITY]) |
|
64 |
AM_CFLAGS="${AM_CFLAGS} ${CFLAG_VISIBILITY}" |
|
65 |
AM_CXXFLAGS="${AM_CXXFLAGS} ${CFLAG_VISIBILITY}" |
|
66 |
])
|