*** boost/asio/impl/read.hpp.orig 2013-05-20 08:32:20.000000000 -0400 --- boost/asio/impl/read.hpp 2014-07-18 10:49:38.021339277 -0400 *************** *** 259,265 **** #endif // defined(BOOST_ASIO_HAS_MOVE) void operator()(const boost::system::error_code& ec, ! std::size_t bytes_transferred, int start = 0) { std::size_t n = 0; switch (start_ = start) --- 259,265 ---- #endif // defined(BOOST_ASIO_HAS_MOVE) void operator()(const boost::system::error_code& ec, ! std::size_t bytes_transferred, int start) { std::size_t n = 0; switch (start_ = start) *************** *** 282,287 **** --- 282,292 ---- handler_(ec, static_cast(total_transferred_)); } } + void operator()(const boost::system::error_code& ec, + std::size_t bytes_transferred) + { + operator()(ec, bytes_transferred, 0); + } //private: AsyncReadStream& stream_; *** boost/asio/impl/write.hpp.orig 2013-05-20 08:32:20.000000000 -0400 --- boost/asio/impl/write.hpp 2014-07-18 10:45:35.253342005 -0400 *************** *** 322,328 **** #endif // defined(BOOST_ASIO_HAS_MOVE) void operator()(const boost::system::error_code& ec, ! std::size_t bytes_transferred, int start = 0) { std::size_t n = 0; switch (start_ = start) --- 322,328 ---- #endif // defined(BOOST_ASIO_HAS_MOVE) void operator()(const boost::system::error_code& ec, ! std::size_t bytes_transferred, int start) { std::size_t n = 0; switch (start_ = start) *************** *** 345,350 **** --- 345,356 ---- handler_(ec, static_cast(total_transferred_)); } } + + void operator()(const boost::system::error_code& ec, + std::size_t bytes_transferred) + { + operator()(ec, bytes_transferred, 0); + } //private: AsyncWriteStream& stream_; *** boost/chrono/io/time_point_io.hpp.orig 2013-10-27 19:55:01.000000000 -0400 --- boost/chrono/io/time_point_io.hpp 2014-07-21 12:09:31.863004249 -0400 *************** *** 966,972 **** failed = tpf.put(os, os, os.fill(), &tm, pb, pe).failed(); if (!failed) { ! duration d = tp - system_clock::from_time_t(t) + seconds(tm.tm_sec); if (d.count() < 10) os << CharT('0'); //if (! os.good()) { // throw "exception"; --- 966,972 ---- failed = tpf.put(os, os, os.fill(), &tm, pb, pe).failed(); if (!failed) { ! duration d = tp - (system_clock::from_time_t(t) + seconds(tm.tm_sec)); if (d.count() < 10) os << CharT('0'); //if (! os.good()) { // throw "exception"; *** boost/date_time/time_resolution_traits.hpp.orig 2009-06-06 07:25:55.000000000 -0400 --- boost/date_time/time_resolution_traits.hpp 2014-07-21 12:25:43.238995396 -0400 *************** *** 68,83 **** --- 68,94 ---- typename frac_sec_type::int_type resolution_adjust, #endif unsigned short frac_digits, + #if defined(_AIX) + typename boost_v_type = boost::int32_t > + #else typename v_type = boost::int32_t > + #endif class time_resolution_traits { public: typedef typename frac_sec_type::int_type fractional_seconds_type; typedef typename frac_sec_type::int_type tick_type; typedef typename frac_sec_type::impl_type impl_type; + #if defined(_AIX) + typedef boost_v_type day_type; + typedef boost_v_type hour_type; + typedef boost_v_type min_type; + typedef boost_v_type sec_type; + #else typedef v_type day_type; typedef v_type hour_type; typedef v_type min_type; typedef v_type sec_type; + #endif // bring in function from frac_sec_type traits structs static fractional_seconds_type as_number(impl_type i) *** boost/foreach.hpp.orig 2013-09-21 16:17:00.000000000 -0400 --- boost/foreach.hpp 2014-07-21 12:22:05.610997379 -0400 *************** *** 58,64 **** || BOOST_WORKAROUND(__GNUC__, < 3) \ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 2)) \ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 3) && defined(__APPLE_CC__)) \ ! || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3206)) \ || BOOST_WORKAROUND(__SUNPRO_CC, >= 0x5100) \ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) --- 58,64 ---- || BOOST_WORKAROUND(__GNUC__, < 3) \ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 2)) \ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 3) && defined(__APPLE_CC__)) \ ! || (BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) && (__IBMCPP__ < 1300)) \ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3206)) \ || BOOST_WORKAROUND(__SUNPRO_CC, >= 0x5100) \ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) *** boost/format/format_class.hpp.orig 2010-07-09 16:27:18.000000000 -0400 --- boost/format/format_class.hpp 2014-07-21 12:13:38.407002003 -0400 *************** *** 68,74 **** { return io::detail::feed(*this,x); } #endif ! #if defined(__GNUC__) // GCC can't handle anonymous enums without some help // ** arguments passing ** // basic_format& operator%(const int& x) --- 68,74 ---- { return io::detail::feed(*this,x); } #endif ! #if defined(__GNUC__) || defined (__IBMCPP__) // GCC can't handle anonymous enums without some help // ** arguments passing ** // basic_format& operator%(const int& x) *** boost/graph/buffer_concepts.hpp.orig 2010-10-04 14:50:40.000000000 -0400 --- boost/graph/buffer_concepts.hpp 2014-07-21 12:49:09.022982583 -0400 *************** *** 25,31 **** BOOST_CONCEPT_ASSERT((Assignable)); ! buf.push(g_ct); buf.pop(); reference t = buf.top(); boost::ignore_unused_variable_warning(t); --- 25,31 ---- BOOST_CONCEPT_ASSERT((Assignable)); ! sizeof(buf.push(g_ct),0); buf.pop(); reference t = buf.top(); boost::ignore_unused_variable_warning(t); *************** *** 51,62 **** : Buffer { BOOST_CONCEPT_USAGE(UpdatableQueue) { ! q.update(g_ct); } void const_constraints(const Q& cq) { ! if (cq.contains(g_ct)) ! dummy = __LINE__; } int dummy; --- 51,61 ---- : Buffer { BOOST_CONCEPT_USAGE(UpdatableQueue) { ! sizeof(q.update(g_ct),0); } void const_constraints(const Q& cq) { ! sizeof(cq.contains(g_ct) ? (dummy = __LINE__, int(0)) : char(0)); } int dummy; *************** *** 77,83 **** void const_constraints(const Q& cq) { km = cq.keys(); ! k = get(km, g_ct); } static const typename Buffer::value_type g_ct; --- 76,82 ---- void const_constraints(const Q& cq) { km = cq.keys(); ! sizeof(k = get(km, g_ct), char(0)); } static const typename Buffer::value_type g_ct; *** boost/interprocess/detail/atomic.hpp.orig 2013-09-08 16:07:03.000000000 -0400 --- boost/interprocess/detail/atomic.hpp 2014-07-18 11:00:18.317332080 -0400 *************** *** 390,396 **** } //namespace interprocess{ } //namespace boost{ ! #elif defined(__IBMCPP__) && (__IBMCPP__ >= 800) && defined(_AIX) #include --- 390,397 ---- } //namespace interprocess{ } //namespace boost{ ! // As of V12.1, XLC++ has atomic BIF's implemented ! #elif defined(__IBMCPP__) && (__IBMCPP__ >= 800) && (__IBMCPP__ < 1210) && defined(_AIX) #include *************** *** 482,488 **** } //namespace interprocess } //namespace boost ! #elif defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 ) namespace boost { namespace interprocess { --- 483,490 ---- } //namespace interprocess } //namespace boost ! // As of V12.1, XLC++ has atomic BIF's implemented ! #elif (defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 )) || (defined(__IBMCPP__) && (__IBMCPP__ >= 1210)) namespace boost { namespace interprocess { *** boost/interprocess/detail/os_thread_functions.hpp.orig 2013-09-30 17:01:45.000000000 -0400 --- boost/interprocess/detail/os_thread_functions.hpp 2014-07-21 12:11:48.299003005 -0400 *************** *** 286,296 **** inline unsigned long get_system_tick_ns() { #ifdef _SC_CLK_TCK ! long hz =::sysconf(_SC_CLK_TCK); // ticks per sec ! if(hz <= 0){ //Try a typical value on error ! hz = 100; } ! return 999999999ul/static_cast(hz)+1ul; #else #error "Can't obtain system tick value for your system, please provide a patch" #endif --- 286,296 ---- inline unsigned long get_system_tick_ns() { #ifdef _SC_CLK_TCK ! long clock_ticks =::sysconf(_SC_CLK_TCK); // ticks per sec ! if(clock_ticks <= 0){ //Try a typical value on error ! clock_ticks = 100; } ! return 999999999ul/static_cast(clock_ticks)+1ul; #else #error "Can't obtain system tick value for your system, please provide a patch" #endif *** boost/math/special_functions/jacobi_elliptic.hpp.orig 2013-04-15 04:47:08.000000000 -0400 --- boost/math/special_functions/jacobi_elliptic.hpp 2014-07-18 11:07:55.081326948 -0400 *************** *** 144,149 **** --- 144,164 ---- { return jacobi_elliptic(k, theta, pcn, pdn, policies::policy<>()); } + #if BOOST_WORKAROUND(__IBMCPP__,BOOST_TESTED_AT(1310)) + template + inline typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn) + { + V *pdn = 0; + return jacobi_elliptic(k, theta, pcn, pdn, policies::policy<>()); + } + + template + inline typename tools::promote_args::type jacobi_elliptic(T k, U theta) + { + V *pdn = 0, *pcn = 0; + return jacobi_elliptic(k, theta, pcn, pdn, policies::policy<>()); + } + #endif template inline typename tools::promote_args::type jacobi_sn(U k, T theta, const Policy& pol) *** boost/math/special_functions/math_fwd.hpp.orig 2013-09-28 12:19:47.000000000 -0400 --- boost/math/special_functions/math_fwd.hpp 2014-07-18 11:17:07.805320734 -0400 *************** *** 812,819 **** --- 812,830 ---- template typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn, V* pdn, const Policy&); + #if BOOST_WORKAROUND(__IBMCPP__,BOOST_TESTED_AT(1310)) || defined(__ibmxl__) + template + typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn, V* pdn); + + template + typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn); + + template + typename tools::promote_args::type jacobi_elliptic(T k, U theta); + #else template typename tools::promote_args::type jacobi_elliptic(T k, U theta, V* pcn = 0, V* pdn = 0); + #endif template typename tools::promote_args::type jacobi_sn(U k, T theta, const Policy& pol); *** boost/math/tools/tuple.hpp.orig 2013-09-28 12:19:47.000000000 -0400 --- boost/math/tools/tuple.hpp 2014-07-18 11:20:31.509318447 -0400 *************** *** 49,55 **** }} ! #elif (defined(__BORLANDC__) && (__BORLANDC__ <= 0x600)) || defined(__IBMCPP__) #include #include --- 49,55 ---- }} ! #elif defined(__BORLANDC__) && (__BORLANDC__ <= 0x600) #include #include *************** *** 62,68 **** --- 65,75 ---- class rv : public ::boost::move_detail::if_c < ::boost::move_detail::is_class_or_union::value + #if BOOST_WORKAROUND(__IBMCPP__,BOOST_TESTED_AT(1310)) + , typename boost::remove_const::type + #else , T + #endif , ::boost::move_detail::empty >::type { *** boost/multiprecision/cpp_int.hpp.orig 2013-09-15 14:04:02.000000000 -0400 --- boost/multiprecision/cpp_int.hpp 2014-07-18 11:21:52.793317531 -0400 *************** *** 729,735 **** typedef mpl::int_ checked_type; protected: BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(local_limb_type) * CHAR_BIT); ! BOOST_STATIC_CONSTANT(local_limb_type, limb_mask = (MinBits < limb_bits) ? local_limb_type((local_limb_type(~local_limb_type(0))) >> (limb_bits - MinBits)) : local_limb_type(~local_limb_type(0))); private: local_limb_type m_data; bool m_sign; --- 729,735 ---- typedef mpl::int_ checked_type; protected: BOOST_STATIC_CONSTANT(unsigned, limb_bits = sizeof(local_limb_type) * CHAR_BIT); ! BOOST_STATIC_CONSTANT(local_limb_type, limb_mask = (MinBits < limb_bits) ? local_limb_type((local_limb_type(~(local_limb_type(0)))) >> (limb_bits - MinBits)) : local_limb_type(~local_limb_type(0))); private: local_limb_type m_data; bool m_sign; *************** *** 1003,1008 **** --- 1003,1024 ---- // // Now the actual backend, normalising parameters passed to the base class: // + // One of the member functions uses divide_unsigned_helper before its definition in divide.hpp. + // Providing forward declarations. + #ifdef __IBMCPP__ + template + void divide_unsigned_helper( + CppInt1* result, + const CppInt2& x, + const CppInt3& y, + CppInt1& r); + template + void divide_unsigned_helper( + CppInt1* result, + const CppInt2& x, + limb_type y, + CppInt1& r); + #endif template struct cpp_int_backend : public cpp_int_base< *** boost/numeric/ublas/matrix_sparse.hpp.orig 2012-09-22 17:57:57.000000000 -0400 --- boost/numeric/ublas/matrix_sparse.hpp 2014-07-21 12:31:06.694992449 -0400 *************** *** 1353,1359 **** typedef T value_type; typedef const T &const_reference; #ifndef BOOST_UBLAS_STRICT_MATRIX_SPARSE ! typedef typename detail::map_traits::reference reference; #else typedef sparse_matrix_element reference; #endif --- 1353,1360 ---- typedef T value_type; typedef const T &const_reference; #ifndef BOOST_UBLAS_STRICT_MATRIX_SPARSE ! // No such thing as std::map::data_value_type ! typedef typename detail::map_traits::reference reference; #else typedef sparse_matrix_element reference; #endif *** boost/proto/transform/default.hpp.orig 2012-09-30 22:06:52.000000000 -0400 --- boost/proto/transform/default.hpp 2014-07-21 12:30:40.986992683 -0400 *************** *** 65,71 **** typedef typename result_of::child_c::type e0; \ typedef typename Grammar::template impl::result_type r0; \ public: \ ! BOOST_PROTO_DECLTYPE_(OP proto::detail::MAKE(), result_type) \ result_type operator ()( \ typename impl::expr_param e \ , typename impl::state_param s \ --- 65,71 ---- typedef typename result_of::child_c::type e0; \ typedef typename Grammar::template impl::result_type r0; \ public: \ ! BOOST_PROTO_DECLTYPE_(OP (proto::detail::MAKE()), result_type) \ result_type operator ()( \ typename impl::expr_param e \ , typename impl::state_param s \ *** boost/static_assert.hpp.orig 2013-09-21 16:17:00.000000000 -0400 --- boost/static_assert.hpp 2014-07-21 12:16:55.419000206 -0400 *************** *** 32,37 **** --- 32,43 ---- # else # define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B ) # endif + #elif defined (__IBMCPP__) + # ifndef BOOST_NO_CXX11_VARIADIC_MACROS + # define BOOST_STATIC_ASSERT_MSG( ... ) __static_assert(__VA_ARGS__) + # else + # define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B ) + # endif #else # define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B ) #endif *************** *** 79,84 **** --- 85,96 ---- # else # define BOOST_STATIC_ASSERT( B ) static_assert(B, #B) # endif + #elif defined (__IBMCPP__) + # ifndef BOOST_NO_CXX11_VARIADIC_MACROS + # define BOOST_STATIC_ASSERT( ... ) __static_assert(__VA_ARGS__, #__VA_ARGS__) + # else + # define BOOST_STATIC_ASSERT( B ) __static_assert(B, #B) + # endif #else namespace boost{ *** boost/test/impl/test_main.ipp.orig 2008-10-13 04:20:26.000000000 -0400 --- boost/test/impl/test_main.ipp 2014-07-21 12:19:33.626998764 -0400 *************** *** 51,57 **** // ************************************************************************** // ::boost::unit_test::test_suite* ! init_unit_test_suite( int argc, char* argv[] ) { using namespace ::boost::unit_test; framework::master_test_suite().p_name.value = "Test Program"; --- 51,58 ---- // ************************************************************************** // ::boost::unit_test::test_suite* ! init_unit_test_suite( int argc, char* argv[] ) __attribute__((weak)) ! { using namespace ::boost::unit_test; framework::master_test_suite().p_name.value = "Test Program"; *** boost/test/impl/unit_test_main.ipp.orig 2009-07-04 02:36:59.000000000 -0400 --- boost/test/impl/unit_test_main.ipp 2014-07-18 11:30:18.117311853 -0400 *************** *** 221,227 **** // ************************************************************************** // int BOOST_TEST_CALL_DECL ! main( int argc, char* argv[] ) { // prototype for user's unit test init function #ifdef BOOST_TEST_ALTERNATIVE_INIT_API --- 221,230 ---- // ************************************************************************** // int BOOST_TEST_CALL_DECL ! main( int argc, char* argv[] ) ! #if defined(__IBMCPP__) || defined(__ibmxl__) ! __attribute__((weak)) ! #endif { // prototype for user's unit test init function #ifdef BOOST_TEST_ALTERNATIVE_INIT_API *** boost/thread/detail/config.hpp.orig 2013-08-03 12:04:39.000000000 -0400 --- boost/thread/detail/config.hpp 2014-07-21 12:17:42.758999775 -0400 *************** *** 363,370 **** --- 363,372 ---- // compatibility with the rest of Boost's auto-linking code: #if defined(BOOST_THREAD_DYN_LINK) || defined(BOOST_ALL_DYN_LINK) # undef BOOST_THREAD_USE_LIB + #ifndef BOOST_THREAD_USE_DLL # define BOOST_THREAD_USE_DLL #endif + #endif #if defined(BOOST_THREAD_BUILD_DLL) //Build dll #elif defined(BOOST_THREAD_BUILD_LIB) //Build lib *** boost/tr1/detail/config_all.hpp.orig 2011-07-25 05:28:58.000000000 -0400 --- boost/tr1/detail/config_all.hpp 2014-07-18 11:47:48.761300044 -0400 *************** *** 121,127 **** # define BOOST_TR1_STD_CHEADER(name) BOOST_TR1_STD_HEADER(name) #endif ! #if defined(__GNUC__) && !defined(BOOST_HAS_INCLUDE_NEXT) # define BOOST_HAS_INCLUDE_NEXT #endif #ifdef __GXX_EXPERIMENTAL_CXX0X__ --- 121,127 ---- # define BOOST_TR1_STD_CHEADER(name) BOOST_TR1_STD_HEADER(name) #endif ! #if (defined(__GNUC__) || defined(__IBMCPP__)) && !defined(BOOST_HAS_INCLUDE_NEXT) # define BOOST_HAS_INCLUDE_NEXT #endif #ifdef __GXX_EXPERIMENTAL_CXX0X__ *** boost/typeof/typeof.hpp.orig 2013-09-21 16:17:00.000000000 -0400 --- boost/typeof/typeof.hpp 2014-07-18 11:41:02.717304607 -0400 *************** *** 171,176 **** --- 171,185 ---- # define BOOST_TYPEOF_KEYWORD __typeof__ # endif # endif + + #elif defined(__IBMCPP__) + # ifndef BOOST_TYPEOF_EMULATION + # ifndef BOOST_TYPEOF_NATIVE + # define BOOST_TYPEOF_NATIVE + # endif + # define BOOST_TYPEOF_KEYWORD __typeof__ + # endif + #else //unknown compiler # ifndef BOOST_TYPEOF_NATIVE # ifndef BOOST_TYPEOF_EMULATION *** libs/chrono/build/Jamfile.v2.orig 2013-03-28 19:45:26.000000000 -0400 --- libs/chrono/build/Jamfile.v2 2014-07-21 12:09:01.439004527 -0400 *************** *** 89,95 **** #BOOST_RATIO_USES_ARRAY_ASSERT #BOOST_CHRONO_USES_ARRAY_ASSERT #vacpp:BOOST_COMMON_TYPE_DONT_USE_TYPEOF ! vacpp:BOOST_TYPEOF_EMULATION sun:__typeof__=__typeof__ BOOST_SYSTEM_NO_DEPRECATED --- 89,95 ---- #BOOST_RATIO_USES_ARRAY_ASSERT #BOOST_CHRONO_USES_ARRAY_ASSERT #vacpp:BOOST_COMMON_TYPE_DONT_USE_TYPEOF ! #vacpp:BOOST_TYPEOF_EMULATION sun:__typeof__=__typeof__ BOOST_SYSTEM_NO_DEPRECATED *** libs/graph/test/make_connected_test.cpp.orig 2013-09-21 16:17:00.000000000 -0400 --- libs/graph/test/make_connected_test.cpp 2014-07-21 12:28:06.606994090 -0400 *************** *** 116,122 **** std::vector gVV_components(num_vertices(gVV)); boost::iterator_property_map< std::vector::iterator, ! typename boost::property_map::const_type > gVV_components_pm(gVV_components.begin(), get(boost::vertex_index, gVV)); BOOST_CHECK(connected_components(gVV, gVV_components_pm) == static_cast(num_cycles)); --- 116,122 ---- std::vector gVV_components(num_vertices(gVV)); boost::iterator_property_map< std::vector::iterator, ! boost::property_map::const_type > gVV_components_pm(gVV_components.begin(), get(boost::vertex_index, gVV)); BOOST_CHECK(connected_components(gVV, gVV_components_pm) == static_cast(num_cycles)); *************** *** 132,138 **** std::vector gLV_components(num_vertices(gLV)); boost::iterator_property_map< std::vector::iterator, ! typename boost::property_map::const_type > gLV_components_pm(gLV_components.begin(), get(boost::vertex_index, gLV)); BOOST_CHECK(connected_components(gLV, gLV_components_pm) == static_cast(num_cycles)); --- 132,138 ---- std::vector gLV_components(num_vertices(gLV)); boost::iterator_property_map< std::vector::iterator, ! boost::property_map::const_type > gLV_components_pm(gLV_components.begin(), get(boost::vertex_index, gLV)); BOOST_CHECK(connected_components(gLV, gLV_components_pm) == static_cast(num_cycles)); *** libs/iostreams/test/Jamfile.v2.orig 2013-09-21 16:17:00.000000000 -0400 --- libs/iostreams/test/Jamfile.v2 2014-07-21 12:26:15.170995104 -0400 *************** *** 95,101 **** [ test-iostreams regex_filter_test.cpp /boost/regex//boost_regex ] ! [ test-iostreams restrict_test.cpp ] [ test-iostreams seekable_file_test.cpp ] [ test-iostreams seekable_filter_test.cpp ] [ test-iostreams sequence_test.cpp ] --- 95,101 ---- [ test-iostreams regex_filter_test.cpp /boost/regex//boost_regex ] ! [ test-iostreams restrict_test.cpp : vacpp:BOOST_RESTRICT_USE_SLICE ] [ test-iostreams seekable_file_test.cpp ] [ test-iostreams seekable_filter_test.cpp ] [ test-iostreams sequence_test.cpp ] *************** *** 141,149 **** { all-tests += [ test-iostreams ! gzip_test.cpp ../build//boost_iostreams ] [ test-iostreams ! zlib_test.cpp ../build//boost_iostreams ] ; } test-suite "iostreams" : $(all-tests) ; --- 141,157 ---- { all-tests += [ test-iostreams ! gzip_test.cpp ! ../src/gzip.cpp ! ../src/zlib.cpp ! ../build//boost_iostreams ! /site-config//zlib ] [ test-iostreams ! zlib_test.cpp ! ../src/gzip.cpp ! ../src/zlib.cpp ! ../build//boost_iostreams ! /site-config//zlib ] ; } test-suite "iostreams" : $(all-tests) ; *** libs/local_function/test/addable.hpp.orig 2012-05-26 17:17:03.000000000 -0400 --- libs/local_function/test/addable.hpp 2014-07-21 12:43:09.802985857 -0400 *************** *** 13,19 **** template struct Addable { // User-defined concept. BOOST_CONCEPT_USAGE(Addable) { ! return_type(x + y); // Check addition `T operator+(T x, T y)`. } private: --- 13,20 ---- template struct Addable { // User-defined concept. BOOST_CONCEPT_USAGE(Addable) { ! // some compilers will require the definition of x and y, so use a sizeof to avoid the requirement ! sizeof(return_type(x + y)); // Check addition `T operator+(T x, T y)`. } private: *** libs/math/test/complex_test.cpp.orig 2013-04-15 04:47:08.000000000 -0400 --- libs/math/test/complex_test.cpp 2014-07-21 12:37:01.742989211 -0400 *************** *** 406,412 **** BOOST_CHECK((boost::math::isnan)(result.real())); BOOST_CHECK(result.imag() == infinity); } ! if(boost::math::signbit(mzero)) { result = boost::math::acos(ct(-1.25f, zero)); BOOST_CHECK(result.real() > 0); --- 406,412 ---- BOOST_CHECK((boost::math::isnan)(result.real())); BOOST_CHECK(result.imag() == infinity); } ! if((boost::math::signbit)(mzero)) { result = boost::math::acos(ct(-1.25f, zero)); BOOST_CHECK(result.real() > 0); *************** *** 537,543 **** BOOST_CHECK((boost::math::isnan)(result.real())); BOOST_CHECK((boost::math::isnan)(result.imag())); } ! if(boost::math::signbit(mzero)) { result = boost::math::acosh(ct(-2.5f, zero)); BOOST_CHECK(result.real() > 0); --- 537,543 ---- BOOST_CHECK((boost::math::isnan)(result.real())); BOOST_CHECK((boost::math::isnan)(result.imag())); } ! if((boost::math::signbit)(mzero)) { result = boost::math::acosh(ct(-2.5f, zero)); BOOST_CHECK(result.real() > 0); *************** *** 669,675 **** BOOST_CHECK(std::fabs(result.real()) == infinity); BOOST_CHECK((boost::math::isnan)(result.imag())); } ! if(boost::math::signbit(mzero)) { result = boost::math::asinh(ct(zero, 1.5f)); BOOST_CHECK(result.real() > 0); --- 669,675 ---- BOOST_CHECK(std::fabs(result.real()) == infinity); BOOST_CHECK((boost::math::isnan)(result.imag())); } ! if((boost::math::signbit)(mzero)) { result = boost::math::asinh(ct(zero, 1.5f)); BOOST_CHECK(result.real() > 0); *************** *** 817,823 **** BOOST_CHECK((boost::math::isnan)(result.imag())); } ! if(boost::math::signbit(mzero)) { result = boost::math::atanh(ct(-2.0f, mzero)); BOOST_CHECK(result.real() < 0); --- 817,823 ---- BOOST_CHECK((boost::math::isnan)(result.imag())); } ! if((boost::math::signbit)(mzero)) { result = boost::math::atanh(ct(-2.0f, mzero)); BOOST_CHECK(result.real() < 0); *** libs/math/test/test_airy.cpp.orig 2013-04-15 04:47:08.000000000 -0400 --- libs/math/test/test_airy.cpp 2014-07-18 14:36:25.305186343 -0400 *************** *** 12,17 **** --- 12,18 ---- #include #include #include + #include #ifdef _MSC_VER # pragma warning(disable : 4756 4127) // overflow in constant arithmetic *************** *** 49,58 **** for(unsigned i = 0; i < data.size(); ++i) { BOOST_CHECK_CLOSE_FRACTION(data[i][1], boost::math::airy_ai(data[i][0]), tol); ! if(boost::math::isfinite(data[i][2])) BOOST_CHECK_CLOSE_FRACTION(data[i][2], boost::math::airy_bi(data[i][0]), tol); BOOST_CHECK_CLOSE_FRACTION(data[i][3], boost::math::airy_ai_prime(data[i][0]), tol); ! if(boost::math::isfinite(data[i][4])) BOOST_CHECK_CLOSE_FRACTION(data[i][4], boost::math::airy_bi_prime(data[i][0]), tol); } } --- 50,59 ---- for(unsigned i = 0; i < data.size(); ++i) { BOOST_CHECK_CLOSE_FRACTION(data[i][1], boost::math::airy_ai(data[i][0]), tol); ! if((boost::math::isfinite)(data[i][2])) BOOST_CHECK_CLOSE_FRACTION(data[i][2], boost::math::airy_bi(data[i][0]), tol); BOOST_CHECK_CLOSE_FRACTION(data[i][3], boost::math::airy_ai_prime(data[i][0]), tol); ! if((boost::math::isfinite)(data[i][4])) BOOST_CHECK_CLOSE_FRACTION(data[i][4], boost::math::airy_bi_prime(data[i][0]), tol); } } *** libs/math/test/test_error_handling.cpp.orig 2013-09-28 12:19:47.000000000 -0400 --- libs/math/test/test_error_handling.cpp 2014-07-18 14:36:52.593186035 -0400 *************** *** 13,18 **** --- 13,19 ---- // in order to check that they are otherwise undefined. // The user MUST define them before they can be used. // + #include struct user_defined_error{}; namespace boost{ namespace math{ namespace policies{ *** libs/math/test/test_hankel.cpp.orig 2013-04-15 04:47:08.000000000 -0400 --- libs/math/test/test_hankel.cpp 2014-07-18 14:37:36.533185542 -0400 *************** *** 13,18 **** --- 13,19 ---- #include #include #include + #include #ifdef _MSC_VER # pragma warning(disable : 4756 4127) // overflow in constant arithmetic *** libs/math/test/test_nc_t.cpp.orig 2013-09-28 12:19:47.000000000 -0400 --- libs/math/test/test_nc_t.cpp 2014-07-21 12:35:39.642989961 -0400 *************** *** 744,750 **** BOOST_CHECK((boost::math::isnan)(mean(ignore_error_non_central_t(1, 0)))); BOOST_CHECK((boost::math::isnan)(mean(ignore_error_non_central_t(2, nan)))); BOOST_CHECK((boost::math::isnan)(mean(ignore_error_non_central_t(nan, nan)))); ! BOOST_CHECK(boost::math::isfinite(mean(ignore_error_non_central_t(2, 0)))); // OK // Variance BOOST_CHECK((boost::math::isnan)(variance(ignore_error_non_central_t(nan, 0)))); --- 744,750 ---- BOOST_CHECK((boost::math::isnan)(mean(ignore_error_non_central_t(1, 0)))); BOOST_CHECK((boost::math::isnan)(mean(ignore_error_non_central_t(2, nan)))); BOOST_CHECK((boost::math::isnan)(mean(ignore_error_non_central_t(nan, nan)))); ! BOOST_CHECK((boost::math::isfinite)(mean(ignore_error_non_central_t(2, 0)))); // OK // Variance BOOST_CHECK((boost::math::isnan)(variance(ignore_error_non_central_t(nan, 0)))); *************** *** 784,796 **** BOOST_CHECK((boost::math::isnan)(kurtosis_excess(ignore_error_non_central_t(3, 0)))); BOOST_CHECK((boost::math::isnan)(kurtosis_excess(ignore_error_non_central_t(4, 0)))); } // has_quiet_NaN ! BOOST_CHECK(boost::math::isfinite(mean(ignore_error_non_central_t(1 + std::numeric_limits::epsilon(), 0)))); ! BOOST_CHECK(boost::math::isfinite(variance(ignore_error_non_central_t(2 + 2 * std::numeric_limits::epsilon(), 0)))); ! BOOST_CHECK(boost::math::isfinite(variance(ignore_error_non_central_t(static_cast(2.0001L), 0)))); ! BOOST_CHECK(boost::math::isfinite(variance(ignore_error_non_central_t(2 + 2 * std::numeric_limits::epsilon(), 0)))); ! BOOST_CHECK(boost::math::isfinite(skewness(ignore_error_non_central_t(3 + 3 * std::numeric_limits::epsilon(), 0)))); ! BOOST_CHECK(boost::math::isfinite(kurtosis(ignore_error_non_central_t(4 + 4 * std::numeric_limits::epsilon(), 0)))); ! BOOST_CHECK(boost::math::isfinite(kurtosis(ignore_error_non_central_t(static_cast(4.0001L), 0)))); // check_out_of_range >(1, 0); // Fails one check because allows df = infinity. check_support >(non_central_t_distribution(1, 0)); --- 784,796 ---- BOOST_CHECK((boost::math::isnan)(kurtosis_excess(ignore_error_non_central_t(3, 0)))); BOOST_CHECK((boost::math::isnan)(kurtosis_excess(ignore_error_non_central_t(4, 0)))); } // has_quiet_NaN ! BOOST_CHECK((boost::math::isfinite)(mean(ignore_error_non_central_t(1 + std::numeric_limits::epsilon(), 0)))); ! BOOST_CHECK((boost::math::isfinite)(variance(ignore_error_non_central_t(2 + 2 * std::numeric_limits::epsilon(), 0)))); ! BOOST_CHECK((boost::math::isfinite)(variance(ignore_error_non_central_t(static_cast(2.0001L), 0)))); ! BOOST_CHECK((boost::math::isfinite)(variance(ignore_error_non_central_t(2 + 2 * std::numeric_limits::epsilon(), 0)))); ! BOOST_CHECK((boost::math::isfinite)(skewness(ignore_error_non_central_t(3 + 3 * std::numeric_limits::epsilon(), 0)))); ! BOOST_CHECK((boost::math::isfinite)(kurtosis(ignore_error_non_central_t(4 + 4 * std::numeric_limits::epsilon(), 0)))); ! BOOST_CHECK((boost::math::isfinite)(kurtosis(ignore_error_non_central_t(static_cast(4.0001L), 0)))); // check_out_of_range >(1, 0); // Fails one check because allows df = infinity. check_support >(non_central_t_distribution(1, 0)); *** libs/math/test/test_next.cpp.orig 2013-04-15 04:47:08.000000000 -0400 --- libs/math/test/test_next.cpp 2014-07-18 14:37:53.701185349 -0400 *************** *** 10,15 **** --- 10,16 ---- #include #include #include + #include #ifdef BOOST_MSVC #pragma warning(disable:4127) *** libs/math/test/test_roots.cpp.orig 2013-04-15 04:47:08.000000000 -0400 --- libs/math/test/test_roots.cpp 2014-07-21 12:29:36.950993265 -0400 *************** *** 14,19 **** --- 14,20 ---- #include #include #include + #include #include "table_type.hpp" #define BOOST_CHECK_CLOSE_EX(a, b, prec, i) \ *** libs/math/test/test_round.cpp.orig 2013-04-15 04:47:08.000000000 -0400 --- libs/math/test/test_round.cpp 2014-07-18 14:38:13.045185132 -0400 *************** *** 14,19 **** --- 14,20 ---- #include #include #include + #include boost::mt19937 rng; *** libs/math/test/test_signed_zero.cpp.orig 2012-05-14 13:01:32.000000000 -0400 --- libs/math/test/test_signed_zero.cpp 2014-07-18 14:38:29.229184949 -0400 *************** *** 21,26 **** --- 21,27 ---- #include #include #include + #include namespace { *** libs/math/test/test_students_t.cpp.orig 2013-09-28 12:19:47.000000000 -0400 --- libs/math/test/test_students_t.cpp 2014-07-21 12:36:18.326989608 -0400 *************** *** 704,716 **** BOOST_CHECK((boost::math::isnan)(kurtosis_excess(ignore_error_students_t(4)))); } // has_quiet_NaN ! BOOST_CHECK(boost::math::isfinite(mean(ignore_error_students_t(1 + std::numeric_limits::epsilon())))); ! BOOST_CHECK(boost::math::isfinite(variance(ignore_error_students_t(2 + 2 * std::numeric_limits::epsilon())))); ! BOOST_CHECK(boost::math::isfinite(variance(ignore_error_students_t(static_cast(2.0001L))))); ! BOOST_CHECK(boost::math::isfinite(variance(ignore_error_students_t(2 + 2 * std::numeric_limits::epsilon())))); ! BOOST_CHECK(boost::math::isfinite(skewness(ignore_error_students_t(3 + 3 * std::numeric_limits::epsilon())))); ! BOOST_CHECK(boost::math::isfinite(kurtosis(ignore_error_students_t(4 + 4 * std::numeric_limits::epsilon())))); ! BOOST_CHECK(boost::math::isfinite(kurtosis(ignore_error_students_t(static_cast(4.0001L))))); // check_out_of_range >(1); // Cannot be used because fails "exception std::domain_error is expected" --- 704,716 ---- BOOST_CHECK((boost::math::isnan)(kurtosis_excess(ignore_error_students_t(4)))); } // has_quiet_NaN ! BOOST_CHECK((boost::math::isfinite)(mean(ignore_error_students_t(1 + std::numeric_limits::epsilon())))); ! BOOST_CHECK((boost::math::isfinite)(variance(ignore_error_students_t(2 + 2 * std::numeric_limits::epsilon())))); ! BOOST_CHECK((boost::math::isfinite)(variance(ignore_error_students_t(static_cast(2.0001L))))); ! BOOST_CHECK((boost::math::isfinite)(variance(ignore_error_students_t(2 + 2 * std::numeric_limits::epsilon())))); ! BOOST_CHECK((boost::math::isfinite)(skewness(ignore_error_students_t(3 + 3 * std::numeric_limits::epsilon())))); ! BOOST_CHECK((boost::math::isfinite)(kurtosis(ignore_error_students_t(4 + 4 * std::numeric_limits::epsilon())))); ! BOOST_CHECK((boost::math::isfinite)(kurtosis(ignore_error_students_t(static_cast(4.0001L))))); // check_out_of_range >(1); // Cannot be used because fails "exception std::domain_error is expected" *** libs/math/test/test_toms748_solve.cpp.orig 2013-04-15 04:47:08.000000000 -0400 --- libs/math/test/test_toms748_solve.cpp 2014-07-18 14:38:48.701184730 -0400 *************** *** 12,17 **** --- 12,18 ---- #include #include #include + #include // // Test functor implements the same test cases as used by *** libs/math/test/test_tr1.cpp.orig 2013-04-15 04:47:08.000000000 -0400 --- libs/math/test/test_tr1.cpp 2014-07-18 14:39:08.929184504 -0400 *************** *** 8,13 **** --- 8,14 ---- #include #include #include // ldexpf + #include #ifdef TEST_STD #include *** libs/numeric/ublas/test/sparse_view_test.cpp.orig 2010-07-05 14:20:58.000000000 -0400 --- libs/numeric/ublas/test/sparse_view_test.cpp 2014-07-21 12:30:23.430992843 -0400 *************** *** 7,17 **** // ublas headers - #include #include #include #include #include --- 7,18 ---- // ublas headers #include #include #include + // Moved the following header down since it uses storage_array which is declared in storage.hpp (included from matrix.hpp) + #include #include *** libs/phoenix/test/regression/bug4853.cpp.orig 2011-04-13 17:42:40.000000000 -0400 --- libs/phoenix/test/regression/bug4853.cpp 2014-07-21 12:26:43.258994848 -0400 *************** *** 18,23 **** --- 18,24 ---- #include #include + #include namespace phoenix = boost::phoenix; *** libs/pool/test/Jamfile.v2.orig 2011-08-02 13:04:07.000000000 -0400 --- libs/pool/test/Jamfile.v2 2014-07-21 12:22:30.338997155 -0400 *************** *** 16,21 **** --- 16,23 ---- pathscale:-Wno-long-long gcc:-Wcast-align msvc:on + # Not sure how the definition of system_category() is not needed by other toolsets + vacpp:/boost/system//boost_system ; import testing ; *** libs/property_map/test/function_property_map_test.cpp.orig 2012-06-30 16:00:41.000000000 -0400 --- libs/property_map/test/function_property_map_test.cpp 2014-07-21 12:15:22.483001053 -0400 *************** *** 41,49 **** function_requires, int>, int> >(); function_requires, int>, int> >(); ! BOOST_STATIC_ASSERT((boost::is_same, int> >::category, boost::readable_property_map_tag>::value)); ! BOOST_STATIC_ASSERT((boost::is_same, int> >::category, boost::readable_property_map_tag>::value)); ! BOOST_STATIC_ASSERT((boost::is_same, int> >::category, boost::lvalue_property_map_tag>::value)); BOOST_CHECK(get(function_property_map, int>(), 3) == 4); BOOST_CHECK(get(function_property_map, int>(add1()), 4) == 5); --- 41,49 ---- function_requires, int>, int> >(); function_requires, int>, int> >(); ! BOOST_STATIC_ASSERT((boost::is_same, int> >::category, boost::readable_property_map_tag>::value)); ! BOOST_STATIC_ASSERT((boost::is_same, int> >::category, boost::readable_property_map_tag>::value)); ! BOOST_STATIC_ASSERT((boost::is_same, int> >::category, boost::lvalue_property_map_tag>::value)); BOOST_CHECK(get(function_property_map, int>(), 3) == 4); BOOST_CHECK(get(function_property_map, int>(add1()), 4) == 5); *** libs/ptr_container/test/tut1.cpp.orig 2008-03-22 17:45:55.000000000 -0400 --- libs/ptr_container/test/tut1.cpp 2014-07-21 12:30:04.438993016 -0400 *************** *** 22,27 **** --- 22,28 ---- // // First we select which container to use. // + #include // Needed for boost::noncopyable #include // *** libs/signals/test/swap_test.cpp.orig 2012-10-13 13:27:29.000000000 -0400 --- libs/signals/test/swap_test.cpp 2014-07-21 12:25:28.462995531 -0400 *************** *** 3,8 **** --- 3,9 ---- #include #include + #include struct HelloWorld { *** libs/thread/build/Jamfile.v2.orig 2013-09-14 10:22:45.000000000 -0400 --- libs/thread/build/Jamfile.v2 2014-07-21 12:07:12.131005523 -0400 *************** *** 242,247 **** --- 242,251 ---- #if ! vacpp in $(properties) || 11.1 in $(properties) || 12.1.0.1 in $(properties) || 12.1 in $(properties) #{ result += /boost/chrono//boost_chrono ; + if vacpp in $(properties) + { + result += /boost/date_time//boost_date_time ; + } #} return $(result) ; *** libs/tr1/test/Jamfile.v2.orig 2009-10-09 12:16:02.000000000 -0400 --- libs/tr1/test/Jamfile.v2 2014-07-21 11:59:12.463009893 -0400 *************** *** 33,39 **** { all_rules += [ compile $(file) ] ; all_rules += [ compile $(file) ! : TEST_STD_HEADERS=1 $(TR1_PROPERTIES) : std_$(file:B) ] ; } for local fileb in [ glob run*.cpp ] { --- 33,41 ---- { all_rules += [ compile $(file) ] ; all_rules += [ compile $(file) ! : TEST_STD_HEADERS=1 $(TR1_PROPERTIES) ! vacpp,aix:__IBMCPP_TR1__ ! : std_$(file:B) ] ; } for local fileb in [ glob run*.cpp ] { *** libs/utility/assert_test.cpp.orig 2013-09-21 16:17:00.000000000 -0400 --- libs/utility/assert_test.cpp 2014-07-18 11:59:59.489291830 -0400 *************** *** 66,71 **** --- 66,80 ---- #undef BOOST_DISABLE_ASSERTS #define BOOST_ENABLE_ASSERT_HANDLER + /* The assertion_failed_msg function declaration is missing if NDEBUG is defined. + The logic in boost/assert.hpp for this declaration is likely incorrect when NDEBUG + is defined, but we will let the author worry about that - this is a safer change + as there may be something that relies on the missing declaration. + */ + #ifdef NDEBUG + # undef NDEBUG + # define NDEBUG_PREVIOUSLY_DEFINED + #endif #include #include #include *************** *** 142,147 **** --- 151,159 ---- #undef BOOST_ENABLE_ASSERT_HANDLER #undef BOOST_ENABLE_ASSERT_MSG_HANDLER + #ifdef NDEBUG_PREVIOUSLY_DEFINED + # define NDEBUG + #endif int main() { *** tools/build/v2/engine/lists.c.orig 2013-05-21 00:14:18.000000000 -0400 --- tools/build/v2/engine/lists.c 2014-07-21 12:04:22.407007069 -0400 *************** *** 86,91 **** --- 86,92 ---- return l; } + __attribute__((__noinline__)) LISTITER list_begin( LIST * l ) { return l ? (LISTITER)( (char *)l + sizeof( LIST ) ) : 0; *** libs/test/src/test_tools.cpp.orig 2008-10-13 04:39:48.000000000 -0400 --- libs/test/src/test_tools.cpp 2014-07-22 07:25:56.615644076 -0400 *************** *** 14,18 **** --- 14,29 ---- #define BOOST_TEST_SOURCE #include + /* With certain optimizations, vacpp requires a definition of this function + since it is called in the function call operator in struct test_main_caller. + Provide a weak definition so the linker will pick up the actual one if the + test case actually defines one. + */ + #ifdef __IBMCPP__ + int test_main( int argc, char* argv[] ) __attribute__((weak)) + { + return 1; + } + #endif // EOF *** boost/move/core.hpp.orig 2013-08-24 06:34:37.000000000 -0400 --- boost/move/core.hpp 2014-07-22 07:42:45.207630598 -0400 *************** *** 16,21 **** --- 16,26 ---- #ifndef BOOST_MOVE_CORE_HPP #define BOOST_MOVE_CORE_HPP + // Needed for the BOOST_WORKAROUND macro + #include + #if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(1310)) + #include + #endif #include //boost_move_no_copy_constructor_or_assign typedef *** boost/container/detail/mpl.hpp.orig 2013-09-26 17:35:57.000000000 -0400 --- boost/container/detail/mpl.hpp 2014-07-22 07:47:27.927626816 -0400 *************** *** 17,22 **** --- 17,24 ---- # pragma once #endif + // Needed for the BOOST_WORKAROUND macro + #include #include namespace boost { *************** *** 112,119 **** --- 114,129 ---- struct select1st // : public std::unary_function { + #if BOOST_WORKAROUND(__IBMCPP__,BOOST_TESTED_AT(1310)) + typedef typename Pair::first_type dep_first_type; + typedef typename Pair::second_type dep_second_type; + #endif template + #if BOOST_WORKAROUND(__IBMCPP__,BOOST_TESTED_AT(1310)) + const dep_first_type& operator()(const OtherPair& x) const + #else const typename Pair::first_type& operator()(const OtherPair& x) const + #endif { return x.first; } const typename Pair::first_type& operator()(const typename Pair::first_type& x) const *** boost/log/core/record_view.hpp.orig 2013-09-12 13:17:07.000000000 -0400 --- boost/log/core/record_view.hpp 2014-07-27 17:12:38.940632744 -0400 *************** *** 62,67 **** --- 62,70 ---- //! Publicly available record data struct public_data { + #if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(1310)) + typedef public_data Injected_public_data; + #endif //! Reference counter #ifndef BOOST_LOG_NO_THREADS mutable boost::detail::atomic_count m_ref_counter; *************** *** 89,95 **** --- 92,102 ---- BOOST_DELETED_FUNCTION(public_data& operator= (public_data const&)) friend void intrusive_ptr_add_ref(const public_data* p) { ++p->m_ref_counter; } + #if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(1310)) + friend void intrusive_ptr_release(const public_data* p) { if (--p->m_ref_counter == 0) Injected_public_data::destroy(p); } + #else friend void intrusive_ptr_release(const public_data* p) { if (--p->m_ref_counter == 0) public_data::destroy(p); } + #endif }; private: *** tools/build/v2/tools/vacpp.jam 2010-02-17 04:49:08.000000000 -0500 --- tools/build/v2/tools/vacpp.jam 2014-07-27 17:52:40.435209298 -0400 *************** *** 13,21 **** import common ; import generators ; import os ; - feature.extend toolset : vacpp ; toolset.inherit vacpp : unix ; generators.override vacpp.prebuilt : builtin.prebuilt ; generators.override vacpp.searched-lib-generator : searched-lib-generator ; --- 13,45 ---- import common ; import generators ; import os ; + import modules ; + + if [ os.name ] = LINUX + { + import gcc ; + } toolset.inherit vacpp : unix ; + feature.extend toolset : vacpp ; + + if [ os.name ] = LINUX + { + rule link ( targets * : sources * : properties * ) + { + gcc.quote-rpath $(targets) ; + } + + rule link.dll ( targets * : sources * : properties * ) + { + gcc.quote-rpath $(targets) ; + } + + rule archive ( targets * : sources * : properties * ) + { + gcc.archive $(targets) : $(sources) : $(properties) ; + } + } generators.override vacpp.prebuilt : builtin.prebuilt ; generators.override vacpp.searched-lib-generator : searched-lib-generator ; *************** *** 25,34 **** local condition = [ common.check-init-parameters vacpp : version $(version) ] ; ! command = [ common.get-invocation-command vacpp : xlC : $(command) : "/usr/vacpp/bin/xlC" ] ; ! common.handle-options vacpp : $(condition) : $(command) : $(options) ; } # Declare generators --- 49,63 ---- local condition = [ common.check-init-parameters vacpp : version $(version) ] ; ! local tool-command = [ common.get-invocation-command vacpp : xlC : $(command) : "/usr/vacpp/bin/xlC" ] ; ! common.handle-options vacpp : $(condition) : $(tool-command) : $(options) ; ! ! if [ os.name ] = LINUX ! { ! gcc.init-link-flags vacpp gnu $(condition) ; ! } } # Declare generators *************** *** 59,76 **** # Enable 64-bit memory addressing model flags vacpp CFLAGS 64 : -q64 ; ! flags vacpp LINKFLAGS 64 : -q64 ; ! flags vacpp ARFLAGS aix/64 : -X 64 ; # Use absolute path when generating debug information flags vacpp CFLAGS on : -g -qfullpath ; ! flags vacpp LINKFLAGS on : -g -qfullpath ; ! flags vacpp LINKFLAGS off : -s ; if [ os.name ] = AIX { flags vacpp.compile C++FLAGS : -qfuncsect ; # The -bnoipath strips the prepending (relative) path of libraries from # the loader section in the target library or executable. Hence, during # load-time LIBPATH (identical to LD_LIBRARY_PATH) or a hard-coded --- 88,112 ---- # Enable 64-bit memory addressing model flags vacpp CFLAGS 64 : -q64 ; ! flags vacpp.link OPTIONS 64 : -q64 ; ! flags vacpp AIX_OBJ_MODE aix/64 : -X 64 ; # Use absolute path when generating debug information flags vacpp CFLAGS on : -g -qfullpath ; ! flags vacpp.link OPTIONS on : -g -qfullpath ; ! flags vacpp.link OPTIONS aix/off/on : -s ; ! ! # In order to prevent TOC overflow for some test cases with many global symbols ! flags vacpp.compile CFLAGS shared : -qpic=large ; ! flags vacpp.link OPTIONS shared : -qpic=large ; if [ os.name ] = AIX { flags vacpp.compile C++FLAGS : -qfuncsect ; + # Enable 32-bit Very Large Address-Space + flags vacpp.link OPTIONS 32 : -bmaxdata:0xAFFFFFFF/dsa ; + # The -bnoipath strips the prepending (relative) path of libraries from # the loader section in the target library or executable. Hence, during # load-time LIBPATH (identical to LD_LIBRARY_PATH) or a hard-coded *************** *** 84,90 **** # AIX 4.x and AIX 6.x. For details about the AIX linker see: # http://download.boulder.ibm.com/ibmdl/pub/software/dw/aix/es-aix_ll.pdf # ! flags vacpp.link LINKFLAGS shared : -bnoipath ; # Run-time linking flags vacpp.link EXE-LINKFLAGS shared : -brtl ; --- 120,126 ---- # AIX 4.x and AIX 6.x. For details about the AIX linker see: # http://download.boulder.ibm.com/ibmdl/pub/software/dw/aix/es-aix_ll.pdf # ! flags vacpp.link OPTIONS shared : -bnoipath ; # Run-time linking flags vacpp.link EXE-LINKFLAGS shared : -brtl ; *************** *** 92,104 **** else { # Linux PPC ! flags vacpp.compile CFLAGS shared : -qpic=large ; ! flags vacpp FINDLIBS : rt ; } # Profiling flags vacpp CFLAGS on : -pg ; ! flags vacpp LINKFLAGS on : -pg ; flags vacpp.compile OPTIONS ; flags vacpp.compile.c++ OPTIONS ; --- 128,139 ---- else { # Linux PPC ! flags vacpp.link FINDLIBS-SA multi : rt ; } # Profiling flags vacpp CFLAGS on : -pg ; ! flags vacpp.link OPTIONS on : -pg ; flags vacpp.compile OPTIONS ; flags vacpp.compile.c++ OPTIONS ; *************** *** 106,150 **** flags vacpp UNDEFS ; flags vacpp HDRS ; flags vacpp STDHDRS ; ! flags vacpp.link OPTIONS ; flags vacpp ARFLAGS ; ! flags vacpp LIBPATH ; ! flags vacpp NEEDLIBS ; ! flags vacpp FINDLIBS ; ! flags vacpp FINDLIBS ; ! ! # Select the compiler name according to the threading model. ! flags vacpp VA_C_COMPILER single : xlc ; ! flags vacpp VA_C_COMPILER multi : xlc_r ; ! flags vacpp VA_CXX_COMPILER single : xlC ; ! flags vacpp VA_CXX_COMPILER multi : xlC_r ; SPACE = " " ; ! flags vacpp.link.dll HAVE_SONAME linux : "" ; ! ! actions vacpp.link bind NEEDLIBS { ! $(VA_CXX_COMPILER) $(EXE-LINKFLAGS) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(OPTIONS) $(USER_OPTIONS) } ! ! actions vacpp.link.dll bind NEEDLIBS { ! xlC_r -G $(LINKFLAGS) -o "$(<[1])" $(HAVE_SONAME)-Wl,-soname$(SPACE)-Wl,$(<[-1]:D=) -L$(LIBPATH) -L$(STDLIBPATH) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) $(OPTIONS) $(USER_OPTIONS) } actions vacpp.compile.c { ! $(VA_C_COMPILER) -c $(OPTIONS) $(USER_OPTIONS) -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" } actions vacpp.compile.c++ { ! $(VA_CXX_COMPILER) -c $(OPTIONS) $(USER_OPTIONS) -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" } ! actions updated together piecemeal vacpp.archive { ! ar $(ARFLAGS) ru "$(<)" "$(>)" } --- 141,211 ---- flags vacpp UNDEFS ; flags vacpp HDRS ; flags vacpp STDHDRS ; ! flags vacpp ARFLAGS ; + flags vacpp ARFLAGS ; ! flags vacpp.link USER_OPTIONS ; ! flags vacpp.link LINKPATH ; ! flags vacpp.link LIBRARIES ; ! flags vacpp.link FINDLIBS-ST ; ! flags vacpp.link FINDLIBS-SA ; ! ! # Select the compiler configuration stanza according to the threading model. ! flags vacpp VA_C_COMPILER_CFG single : -F:xlc ; ! flags vacpp VA_C_COMPILER_CFG multi : -F:xlc_r ; ! flags vacpp VA_CXX_COMPILER_CFG single : -F:xlC ; ! flags vacpp VA_CXX_COMPILER_CFG multi : -F:xlC_r ; SPACE = " " ; ! if [ os.name ] = LINUX { ! actions link bind LIBRARIES ! { ! $(CONFIG_COMMAND) $(VA_CXX_COMPILER_CFG) -L"$(LINKPATH)" -Wl,-R,$(RPATH) -Wl,-rpath-link,"$(RPATH_LINK)" -o "$(<[1])" $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) ! } ! actions link.dll bind LIBRARIES ! { ! $(CONFIG_COMMAND) $(VA_CXX_COMPILER_CFG) -G -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,$(RPATH) -o "$(<[1])" -Wl,-soname=$(<[-1]:D=) $(START-GROUP) "$(>)" "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS) ! } } ! else { ! actions vacpp.link bind LIBRARIES ! { ! $(CONFIG_COMMAND) $(VA_CXX_COMPILER_CFG) $(EXE-LINKFLAGS) -o "$(<[1])" -L$(LINKPATH) "$(>)" "$(LIBRARIES)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) $(OPTIONS) $(USER_OPTIONS) ! } ! ! actions vacpp.link.dll bind LIBRARIES ! { ! $(CONFIG_COMMAND) $(VA_CXX_COMPILER_CFG) -G -o "$(<[1])" $(HAVE_SONAME)-Wl,-soname$(SPACE)-Wl,$(<[-1]:D=) -L$(LINKPATH) "$(>)" "$(LIBRARIES)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) $(OPTIONS) $(USER_OPTIONS) ! } } actions vacpp.compile.c { ! $(CONFIG_COMMAND) $(VA_C_COMPILER_CFG) -c $(OPTIONS) $(USER_OPTIONS) -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" } actions vacpp.compile.c++ { ! $(CONFIG_COMMAND) $(VA_CXX_COMPILER_CFG) -c $(OPTIONS) $(USER_OPTIONS) -I$(BOOST_ROOT) -U$(UNDEFS) -D$(DEFINES) $(CFLAGS) $(C++FLAGS) -qxflag=MangleCVOnTemplateTypeArgs -I"$(HDRS)" -I"$(STDHDRS)" -o "$(<)" "$(>)" } ! if [ os.name ] = AIX ! { ! actions updated together piecemeal vacpp.archive ! { ! ar $(AIX_OBJ_MODE) $(ARFLAGS) rcu "$(<)" "$(>)" ! ranlib $(AIX_OBJ_MODE) "$(<)" ! } ! } ! else { ! actions piecemeal archive ! { ! ar $(ARFLAGS) rc "$(<)" "$(>)" ! ranlib "$(<)" ! } }