But only if qt was built with reduced relocations.tags/v0.15.1
@@ -160,6 +160,43 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[ | |||
fi | |||
fi | |||
if test x$use_hardening != xno; then | |||
BITCOIN_QT_CHECK([ | |||
AC_MSG_CHECKING(whether -fPIE can be used with this Qt config) | |||
TEMP_CPPFLAGS=$CPPFLAGS | |||
TEMP_CXXFLAGS=$CXXFLAGS | |||
CPPFLAGS="$QT_INCLUDES $CPPFLAGS" | |||
CXXFLAGS="$PIE_FLAGS $CXXFLAGS" | |||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <QtCore/qconfig.h>]], | |||
[[ | |||
#if defined(QT_REDUCE_RELOCATIONS) | |||
choke; | |||
#endif | |||
]])], | |||
[ AC_MSG_RESULT(yes); QT_PIE_FLAGS=$PIE_FLAGS ], | |||
[ AC_MSG_RESULT(no); QT_PIE_FLAGS=$PIC_FLAGS] | |||
) | |||
CPPFLAGS=$TEMP_CPPFLAGS | |||
CXXFLAGS=$TEMP_CXXFLAGS | |||
]) | |||
else | |||
BITCOIN_QT_CHECK([ | |||
AC_MSG_CHECKING(whether -fPIC is needed with this Qt config) | |||
TEMP_CPPFLAGS=$CPPFLAGS | |||
CPPFLAGS="$QT_INCLUDES $CPPFLAGS" | |||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <QtCore/qconfig.h>]], | |||
[[ | |||
#if defined(QT_REDUCE_RELOCATIONS) | |||
choke; | |||
#endif | |||
]])], | |||
[ AC_MSG_RESULT(no)], | |||
[ AC_MSG_RESULT(yes); QT_PIE_FLAGS=$PIC_FLAGS] | |||
) | |||
CPPFLAGS=$TEMP_CPPFLAGS | |||
]) | |||
fi | |||
BITCOIN_QT_PATH_PROGS([MOC], [moc-qt${bitcoin_qt_got_major_vers} moc${bitcoin_qt_got_major_vers} moc], $qt_bin_path) | |||
BITCOIN_QT_PATH_PROGS([UIC], [uic-qt${bitcoin_qt_got_major_vers} uic${bitcoin_qt_got_major_vers} uic], $qt_bin_path) | |||
BITCOIN_QT_PATH_PROGS([RCC], [rcc-qt${bitcoin_qt_got_major_vers} rcc${bitcoin_qt_got_major_vers} rcc], $qt_bin_path) | |||
@@ -205,6 +242,7 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[ | |||
]) | |||
AC_MSG_RESULT([$bitcoin_enable_qt (Qt${bitcoin_qt_got_major_vers})]) | |||
AC_SUBST(QT_PIE_FLAGS) | |||
AC_SUBST(QT_INCLUDES) | |||
AC_SUBST(QT_LIBS) | |||
AC_SUBST(QT_LDFLAGS) |
@@ -329,7 +329,7 @@ BITCOIN_QT_INCLUDES = -I$(builddir)/qt -I$(srcdir)/qt -I$(srcdir)/qt/forms \ | |||
qt_libbitcoinqt_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \ | |||
$(QT_INCLUDES) $(QT_DBUS_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS) | |||
qt_libbitcoinqt_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) | |||
qt_libbitcoinqt_a_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS) | |||
qt_libbitcoinqt_a_SOURCES = $(BITCOIN_QT_CPP) $(BITCOIN_QT_H) $(QT_FORMS_UI) \ | |||
$(QT_QRC) $(QT_QRC_LOCALE) $(QT_TS) $(PROTOBUF_PROTO) $(RES_ICONS) $(RES_IMAGES) $(RES_MOVIES) | |||
@@ -353,7 +353,7 @@ $(QT_MOC_CPP): $(PROTOBUF_H) | |||
# bitcoin-qt binary # | |||
qt_bitcoin_qt_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BITCOIN_QT_INCLUDES) \ | |||
$(QT_INCLUDES) $(PROTOBUF_CFLAGS) $(QR_CFLAGS) | |||
qt_bitcoin_qt_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) | |||
qt_bitcoin_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS) | |||
qt_bitcoin_qt_SOURCES = qt/bitcoin.cpp | |||
if TARGET_DARWIN |
@@ -38,7 +38,7 @@ qt_test_test_bitcoin_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBIT | |||
$(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) \ | |||
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) | |||
qt_test_test_bitcoin_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) | |||
qt_test_test_bitcoin_qt_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) | |||
qt_test_test_bitcoin_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS) | |||
CLEAN_BITCOIN_QT_TEST = $(TEST_QT_MOC_CPP) qt/test/*.gcda qt/test/*.gcno | |||