aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2020-07-14 20:37:21 +0800
committerfanquake <fanquake@gmail.com>2021-02-12 09:04:16 +0800
commit7cd0a696643a824ab6f6911278f116f01c5af662 (patch)
tree9a2087515fbfaad171adc0c8187db35e69c26d41
parent1624e17b5430dfe808bb3b1b79dfa53bf45aa053 (diff)
downloadbitcoin-7cd0a696643a824ab6f6911278f116f01c5af662.tar.xz
build: test for __declspec(dllexport) in configure
This should work for GCC and Clang when building for Windows targets.
-rw-r--r--configure.ac13
-rw-r--r--src/script/bitcoinconsensus.h10
2 files changed, 16 insertions, 7 deletions
diff --git a/configure.ac b/configure.ac
index b80bde81d4..3ed27b0752 100644
--- a/configure.ac
+++ b/configure.ac
@@ -813,7 +813,6 @@ if test x$ac_cv_sys_large_files != x &&
CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
fi
-AX_GCC_FUNC_ATTRIBUTE([dllexport])
AX_GCC_FUNC_ATTRIBUTE([dllimport])
if test x$use_glibc_compat != xno; then
@@ -1000,6 +999,18 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
]
)
+AC_MSG_CHECKING([for dllexport attribute])
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+ __declspec(dllexport) int foo(void);
+ int main(){}
+ ])],
+ [
+ AC_DEFINE(HAVE_DLLEXPORT_ATTRIBUTE,1,[Define if the dllexport attribute is supported.])
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
dnl thread_local is currently disabled when building with glibc back compat.
dnl Our minimum supported glibc is 2.17, however support for thread_local
dnl did not arrive in glibc until 2.18.
diff --git a/src/script/bitcoinconsensus.h b/src/script/bitcoinconsensus.h
index 9c966e7c1d..b6939127e1 100644
--- a/src/script/bitcoinconsensus.h
+++ b/src/script/bitcoinconsensus.h
@@ -11,12 +11,10 @@
#if defined(BUILD_BITCOIN_INTERNAL) && defined(HAVE_CONFIG_H)
#include <config/bitcoin-config.h>
#if defined(_WIN32)
- #if defined(DLL_EXPORT)
- #if defined(HAVE_FUNC_ATTRIBUTE_DLLEXPORT)
- #define EXPORT_SYMBOL __declspec(dllexport)
- #else
- #define EXPORT_SYMBOL
- #endif
+ #if defined(HAVE_DLLEXPORT_ATTRIBUTE)
+ #define EXPORT_SYMBOL __declspec(dllexport)
+ #else
+ #define EXPORT_SYMBOL
#endif
#elif defined(HAVE_DEFAULT_VISIBILITY_ATTRIBUTE)
#define EXPORT_SYMBOL __attribute__ ((visibility ("default")))