From 80fb8000f0f4fd8dd2f842c95afab73861ef3a76 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Fri, 30 Jun 2017 20:57:59 +0300 Subject: [PATCH 1/4] Add address model to auto_link.hpp --- include/boost/config/auto_link.hpp | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index c71e8035..7b79cb37 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -45,6 +45,7 @@ BOOST_LIB_PREFIX + BOOST_LIB_TOOLSET + BOOST_LIB_THREAD_OPT + BOOST_LIB_RT_OPT + + BOOST_LIB_ADDRESS_MODEL_OPT "-" + BOOST_LIB_VERSION @@ -69,6 +70,8 @@ BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used, p STLport build. n STLport build without its IOStreams. +BOOST_LIB_ADDRESS_MODEL_OPT: The address model (-32 or -64) + BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. @@ -361,6 +364,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. #endif +// +// BOOST_LIB_ADDRESS_MODEL_OPT +// + +#if defined( _M_IX86 ) +# define BOOST_LIB_ADDRESS_MODEL_OPT "-32" +#elif defined( _M_X64 ) +# define BOOST_LIB_ADDRESS_MODEL_OPT "-64" +#endif + // // select linkage opt: // @@ -380,6 +393,7 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. && defined(BOOST_LIB_TOOLSET) \ && defined(BOOST_LIB_THREAD_OPT) \ && defined(BOOST_LIB_RT_OPT) \ + && defined(BOOST_LIB_ADDRESS_MODEL_OPT) \ && defined(BOOST_LIB_VERSION) #ifdef BOOST_AUTO_LINK_TAGGED @@ -393,14 +407,14 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib") # endif #elif defined(BOOST_LIB_BUILDID) -# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ADDRESS_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") # ifdef BOOST_LIB_DIAGNOSTIC -# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") +# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ADDRESS_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") # endif #else -# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib") +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ADDRESS_MODEL_OPT "-" BOOST_LIB_VERSION ".lib") # ifdef BOOST_LIB_DIAGNOSTIC -# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib") +# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ADDRESS_MODEL_OPT "-" BOOST_LIB_VERSION ".lib") # endif #endif @@ -431,6 +445,9 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. #if defined(BOOST_LIB_RT_OPT) # undef BOOST_LIB_RT_OPT #endif +#if defined(BOOST_LIB_ADDRESS_MODEL_OPT) +# undef BOOST_LIB_ADDRESS_MODEL_OPT +#endif #if defined(BOOST_LIB_LINK_OPT) # undef BOOST_LIB_LINK_OPT #endif From 6098c81ee0d8e700143fb274d147af50b5d4b09a Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Fri, 7 Jul 2017 02:56:46 +0300 Subject: [PATCH 2/4] Use architecture and address model in autolink, instead of just address model --- include/boost/config/auto_link.hpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index 7b79cb37..271f8379 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -45,7 +45,7 @@ BOOST_LIB_PREFIX + BOOST_LIB_TOOLSET + BOOST_LIB_THREAD_OPT + BOOST_LIB_RT_OPT - + BOOST_LIB_ADDRESS_MODEL_OPT + + BOOST_LIB_ARCH_AND_MODEL_OPT "-" + BOOST_LIB_VERSION @@ -70,7 +70,8 @@ BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used, p STLport build. n STLport build without its IOStreams. -BOOST_LIB_ADDRESS_MODEL_OPT: The address model (-32 or -64) +BOOST_LIB_ARCH_AND_MODEL_OPT: The architecture and address model + (-x32 or -x64 for x86/32 and x86/64 respectively) BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. @@ -365,13 +366,17 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. #endif // -// BOOST_LIB_ADDRESS_MODEL_OPT +// BOOST_LIB_ARCH_AND_MODEL_OPT // #if defined( _M_IX86 ) -# define BOOST_LIB_ADDRESS_MODEL_OPT "-32" +# define BOOST_LIB_ARCH_AND_MODEL_OPT "-x32" #elif defined( _M_X64 ) -# define BOOST_LIB_ADDRESS_MODEL_OPT "-64" +# define BOOST_LIB_ARCH_AND_MODEL_OPT "-x64" +#elif defined( _M_ARM ) +# define BOOST_LIB_ARCH_AND_MODEL_OPT "-a32" +#elif defined( _M_ARM64 ) +# define BOOST_LIB_ARCH_AND_MODEL_OPT "-a64" #endif // @@ -393,7 +398,7 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. && defined(BOOST_LIB_TOOLSET) \ && defined(BOOST_LIB_THREAD_OPT) \ && defined(BOOST_LIB_RT_OPT) \ - && defined(BOOST_LIB_ADDRESS_MODEL_OPT) \ + && defined(BOOST_LIB_ARCH_AND_MODEL_OPT) \ && defined(BOOST_LIB_VERSION) #ifdef BOOST_AUTO_LINK_TAGGED @@ -407,14 +412,14 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib") # endif #elif defined(BOOST_LIB_BUILDID) -# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ADDRESS_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") # ifdef BOOST_LIB_DIAGNOSTIC -# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ADDRESS_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") +# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib") # endif #else -# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ADDRESS_MODEL_OPT "-" BOOST_LIB_VERSION ".lib") +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION ".lib") # ifdef BOOST_LIB_DIAGNOSTIC -# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ADDRESS_MODEL_OPT "-" BOOST_LIB_VERSION ".lib") +# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION ".lib") # endif #endif @@ -445,8 +450,8 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. #if defined(BOOST_LIB_RT_OPT) # undef BOOST_LIB_RT_OPT #endif -#if defined(BOOST_LIB_ADDRESS_MODEL_OPT) -# undef BOOST_LIB_ADDRESS_MODEL_OPT +#if defined(BOOST_LIB_ARCH_AND_MODEL_OPT) +# undef BOOST_LIB_ARCH_AND_MODEL_OPT #endif #if defined(BOOST_LIB_LINK_OPT) # undef BOOST_LIB_LINK_OPT From 6102d18867f7b557e816535930c133e8c5c4821a Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 1 Sep 2017 18:33:35 +0100 Subject: [PATCH 3/4] VC2017.3: don't test for wcscpy as VC2017.3 rejects it as "unsafe". --- test/boost_no_cwchar.ipp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/boost_no_cwchar.ipp b/test/boost_no_cwchar.ipp index d1117018..698dbd63 100644 --- a/test/boost_no_cwchar.ipp +++ b/test/boost_no_cwchar.ipp @@ -19,7 +19,7 @@ int test() wchar_t c1[2] = { 0 }; wchar_t c2[2] = { 0 }; if(wcscmp(c1,c2) || wcslen(c1)) return -1; - wcscpy(c1,c2); + //wcscpy(c1,c2); wcsxfrm(c1,c2,0); return 0; } From 0cdf4a5da8f2569061721abfeb3a43456cb060dc Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Mon, 4 Sep 2017 08:34:00 +0100 Subject: [PATCH 4/4] config_build_check.cpp: add workarounds from config.hpp for clang build. --- test/config_build_check.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/config_build_check.cpp b/test/config_build_check.cpp index b95d1c5e..480e93ef 100644 --- a/test/config_build_check.cpp +++ b/test/config_build_check.cpp @@ -6,6 +6,8 @@ // See http://www.boost.org/libs/config for the most recent version.// // Revision $Id$ // +// We include this as it contains some workarounds we may need (like a declaration for ::gets to get clang building): +#include # include "../test/boost_has_int128.ipp" # include "../test/boost_no_constexpr.ipp"