Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Benjamin Allred
crown-core
Commits
29abd92c
Commit
29abd92c
authored
10 years ago
by
Wladimir J. van der Laan
Browse files
Options
Download
Plain Diff
Merge pull request #4725
e432a5f0
build: add option for reducing exports (v2) (Cory Fields)
parents
954d229b
733c8a19
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
configure.ac
+78
-0
configure.ac
src/Makefile.am
+3
-0
src/Makefile.am
src/Makefile.qt.include
+1
-1
src/Makefile.qt.include
src/Makefile.qttest.include
+1
-1
src/Makefile.qttest.include
src/Makefile.test.include
+1
-0
src/Makefile.test.include
with
84 additions
and
2 deletions
+84
-2
configure.ac
View file @
29abd92c
...
...
@@ -90,6 +90,12 @@ AC_ARG_ENABLE([hardening],
[use_hardening=$enableval],
[use_hardening=yes])
AC_ARG_ENABLE([reduce-exports],
[AS_HELP_STRING([--enable-reduce-exports],
[attempt to reduce exported symbols in the resulting executables (default is yes)])],
[use_reduce_exports=$enableval],
[use_reduce_exports=auto])
AC_ARG_ENABLE([ccache],
[AS_HELP_STRING([--enable-ccache],
[use ccache for building (default is yes if ccache is found)])],
...
...
@@ -396,6 +402,36 @@ AC_TRY_COMPILE([#include <sys/socket.h>],
AC_SEARCH_LIBS([clock_gettime],[rt])
AC_MSG_CHECKING([for visibility attribute])
AC_LINK_IFELSE([AC_LANG_SOURCE([
int foo_def( void ) __attribute__((visibility("default")));
int main(){}
])],
[
AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
AC_MSG_RESULT(yes)
],
[
AC_MSG_RESULT(no)
if test x$use_reduce_exports = xyes; then
AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduced-exports.])
fi
AC_MSG_WARN([Cannot find a working visibility attribute. Disabling reduced exports.])
use_reduce_exports=no
]
)
if test x$use_reduce_exports != xno; then
AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
[
if test x$use_reduce_exports = xyes; then
AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduced-exports.])
fi
AC_MSG_WARN([Cannot set default symbol visibility. Disabling reduced exports.])
use_reduce_exports=no
])
fi
LEVELDB_CPPFLAGS=
LIBLEVELDB=
LIBMEMENV=
...
...
@@ -426,6 +462,40 @@ AX_BOOST_PROGRAM_OPTIONS
AX_BOOST_THREAD
AX_BOOST_CHRONO
if test x$use_reduce_exports != xno; then
AC_MSG_CHECKING([for working boost reduced exports])
TEMP_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
@%:@include <boost/version.hpp>
]], [[
#if BOOST_VERSION >= 104900
// Everything is okay
#else
# error Boost version is too old
#endif
]])],[
AC_MSG_RESULT(yes)
],[:
if test x$use_reduce_exports = xauto; then
use_reduce_exports=no
else
if test x$use_reduce_exports = xyes; then
AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduced-exports.])
fi
fi
AC_MSG_RESULT(no)
AC_MSG_WARN([boost versions < 1.49 are known to have symbol visibility issues. Disabling reduced exports.])
])
CPPFLAGS="$TEMP_CPPFLAGS"
fi
if test x$use_reduce_exports != xno; then
CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
fi
if test x$use_tests = xyes; then
if test x$HEXDUMP = x; then
...
...
@@ -672,6 +742,13 @@ else
AC_MSG_RESULT([no])
fi
AC_MSG_CHECKING([whether to reduce exports])
if test x$use_reduce_exports != xno; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests = xnononono; then
AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-daemon --with-gui or --enable-tests])
fi
...
...
@@ -704,6 +781,7 @@ AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
AC_SUBST(RELDFLAGS)
AC_SUBST(LIBTOOL_LDFLAGS)
AC_SUBST(USE_UPNP)
AC_SUBST(USE_QRCODE)
...
...
This diff is collapsed.
Click to expand it.
src/Makefile.am
View file @
29abd92c
...
...
@@ -262,6 +262,7 @@ endif
bitcoind_LDADD
+=
$(BOOST_LIBS)
$(BDB_LIBS)
$(SSL_LIBS)
$(CRYPTO_LIBS)
bitcoind_CPPFLAGS
=
$(BITCOIN_INCLUDES)
bitcoind_LDFLAGS
=
$(RELDFLAGS)
$(AM_LDFLAGS)
# bitcoin-cli binary #
bitcoin_cli_LDADD
=
\
...
...
@@ -299,10 +300,12 @@ endif
bitcoin_tx_SOURCES
=
bitcoin-tx.cpp
bitcoin_tx_CPPFLAGS
=
$(BITCOIN_INCLUDES)
#
bitcoin_tx_LDFLAGS
=
$(RELDFLAGS)
$(AM_LDFLAGS)
if
TARGET_WINDOWS
bitcoin_cli_SOURCES
+=
bitcoin-cli-res.rc
endif
bitcoin_cli_LDFLAGS
=
$(RELDFLAGS)
$(AM_LDFLAGS)
CLEANFILES
=
leveldb/libleveldb.a leveldb/libmemenv.a
*
.gcda
*
.gcno
...
...
This diff is collapsed.
Click to expand it.
src/Makefile.qt.include
View file @
29abd92c
...
...
@@ -362,7 +362,7 @@ qt_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL)
if
USE_LIBSECP256K1
qt_bitcoin_qt_LDADD
+=
secp256k1/libsecp256k1.la
endif
qt_bitcoin_qt_LDFLAGS
=
$(AM_LDFLAGS)
$(QT_LDFLAGS)
qt_bitcoin_qt_LDFLAGS
=
$(RELDFLAGS)
$(AM_LDFLAGS)
$(QT_LDFLAGS)
#locale/foo.ts -> locale/foo.qm
QT_QM
=
$(QT_TS:.ts=.qm)
...
...
This diff is collapsed.
Click to expand it.
src/Makefile.qttest.include
View file @
29abd92c
...
...
@@ -36,7 +36,7 @@ qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBIT
if
USE_LIBSECP256K1
qt_test_test_bitcoin_qt_LDADD
+=
secp256k1/libsecp256k1.la
endif
qt_test_test_bitcoin_qt_LDFLAGS
=
$(AM_LDFLAGS)
$(QT_LDFLAGS)
qt_test_test_bitcoin_qt_LDFLAGS
=
$(RELDFLAGS)
$(AM_LDFLAGS)
$(QT_LDFLAGS)
CLEAN_BITCOIN_QT_TEST
=
$(TEST_QT_MOC_CPP)
qt/test/
*
.gcda qt/test/
*
.gcno
...
...
This diff is collapsed.
Click to expand it.
src/Makefile.test.include
View file @
29abd92c
...
...
@@ -75,6 +75,7 @@ if USE_LIBSECP256K1
endif
test_test_bitcoin_LDADD
+=
$(BDB_LIBS)
$(SSL_LIBS)
$(CRYPTO_LIBS)
test_test_bitcoin_LDFLAGS
=
$(RELDFLAGS)
$(AM_LDFLAGS)
nodist_test_test_bitcoin_SOURCES
=
$(GENERATED_TEST_FILES)
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment