[buddy] Probe for -fvisibility and -fvisibility-inlines-hidden.

* configure.ac: Check gcc and g++ for -fvisibility and
-fvisibility-inlines-hidden.  Add these options to
CFLAGS and CXXFLAGS.
* m4/ax_check_compile_flag.m4: New file.
* src/Makefile.am: Build BuDDy as a single library, reverting part of
the changes introduced in my previous patch to this file.  Since
the options are set in CFLAGS/CXXFLAGS, there is no possibility
for -fvisibility-inlines-hidden to be passed to the C compiler.
This commit is contained in:
Alexandre Duret-Lutz 2013-07-04 18:46:07 +02:00
parent e4abcfddfc
commit cee552689a
3 changed files with 18 additions and 12 deletions

View file

@ -20,6 +20,18 @@ AC_PROG_CXX
LT_INIT([win32-dll]) LT_INIT([win32-dll])
# Use -Werror since using -fvisibility under MinGW is only a warning.
# (The option is ignored anyway since this does not make sense under windows).
AX_CHECK_COMPILE_FLAG([-Werror -fvisibility=hidden],
[CFLAGS="$CFLAGS -fvisibility=hidden"])
AC_LANG(C++)
AX_CHECK_COMPILE_FLAG([-Werror -fvisibility=hidden],
[CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
AX_CHECK_COMPILE_FLAG([-fvisibility-inlines-hidden],
[CXXFLAGS="$CXXFLAGS -fvisibility-inlines-hidden"])])
AC_LANG(C)
adl_ENABLE_DEBUG adl_ENABLE_DEBUG
ad_GCC_OPTIM ad_GCC_OPTIM
adl_NDEBUG adl_NDEBUG
@ -31,6 +43,7 @@ if test x$enable_warnings = xyes; then
CF_GCC_WARNINGS CF_GCC_WARNINGS
fi fi
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([ AC_CONFIG_FILES([

View file

@ -0,0 +1 @@
../../m4/ax_check_compile_flag.m4

View file

@ -1,29 +1,21 @@
include_HEADERS = bdd.h fdd.h bvec.h include_HEADERS = bdd.h fdd.h bvec.h
BUDDY_FLAGS = -I$(top_builddir) -DVERSION=23 \ BUDDY_FLAGS = -I$(top_builddir) -DVERSION=23 -DBUDDY_DLL_EXPORTS -DBUDDY_DLL
-fvisibility=hidden -DBUDDY_DLL_EXPORTS -DBUDDY_DLL
# Compile the C++ part of the library with
# -fvisibility-inlines-hidden, this option is not valid for C.
lib_LTLIBRARIES = libbdd.la lib_LTLIBRARIES = libbdd.la
libbdd_la_CPPFLAGS = $(BUDDY_FLAGS) -fvisibility-inlines-hidden
libbdd_la_SOURCES = cppext.cxx
libbdd_la_LIBADD = libbdd_c.la
# See the `Updating version info' node of the Libtool manual before # See the `Updating version info' node of the Libtool manual before
# changing this. # changing this.
libbdd_la_LDFLAGS = -no-undefined -version-info 0:0:0 libbdd_la_LDFLAGS = -no-undefined -version-info 0:0:0
libbdd_la_CPPFLAGS = $(BUDDY_FLAGS)
# The C part of the library. libbdd_la_SOURCES = \
noinst_LTLIBRARIES = libbdd_c.la
libbdd_c_la_CPPFLAGS = $(BUDDY_FLAGS)
libbdd_c_la_SOURCES = \
bddio.c \ bddio.c \
bddop.c \ bddop.c \
bddtree.h \ bddtree.h \
bvec.c \ bvec.c \
cache.c \ cache.c \
cache.h \ cache.h \
cppext.cxx \
fdd.c \ fdd.c \
imatrix.c \ imatrix.c \
imatrix.h \ imatrix.h \