[Boost-bugs] [Boost C++ Libraries] #12457: cannot compile log with Oracle Developer Studio 12.5

Subject: [Boost-bugs] [Boost C++ Libraries] #12457: cannot compile log with Oracle Developer Studio 12.5
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2016-09-14 16:32:40


#12457: cannot compile log with Oracle Developer Studio 12.5
-------------------------------------------+--------------------------
 Reporter: Aparna Kumta <aparna.kumta@…> | Owner: timblechmann
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: atomic
  Version: Boost 1.62.0 | Severity: Problem
 Keywords: |
-------------------------------------------+--------------------------
 Compiling Boost.log with Oracle Developer Studio 12.5, we see the
 following failure:

 % "CC" -std=c++11 -library=stdcpp,CrunG3 -xO4 -mt -erroff=%none -m32 -KPIC
 -DBOOST_ALL_NO_LIB=1 -DBOOST_ATOMIC_DYN_LINK=1 -DBOOST_CHRONO_DYN_LINK=1
 -DBOOST_DATE_TIME_DYN_LINK=1 -DBOOST_FILESYSTEM_DYN_LINK=1
 -DBOOST_LOG_BUILDING_THE_LIB=1 -DBOOST_LOG_DLL
 -DBOOST_LOG_HAS_PTHREAD_MUTEX_ROBUST -DBOOST_LOG_WITHOUT_DEBUG_OUTPUT
 -DBOOST_LOG_WITHOUT_EVENT_LOG -DBOOST_SPIRIT_USE_PHOENIX_V3=1
 -DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_SYSTEM_NO_DEPRECATED
 -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_THREAD_DONT_USE_CHRONO=1
 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_DLL=1 -DDATE_TIME_INLINE -DNDEBUG
 -D_XOPEN_SOURCE=500 -D__EXTENSIONS__ -D__STDC_CONSTANT_MACROS
 -D__typeof__=__typeof__ -I"../../.." -I"../../../libs/log/src" -c -o
 "../../../bin.v2/libs/log/build/sun/release/stdlib-gnu/threading-
 multi/posix/ipc_reliable_message_queue.o"
 "../../../libs/log/src/posix/ipc_reliable_message_queue.cpp"

 "../../../libs/log/src/posix/ipc_reliable_message_queue.cpp", line 61:
 Error: #error Boost.Log: Native 32-bit atomic operations are required but
 not supported by Boost.Atomic on the target platform.

 This seems to be a configuration issue.

 The following changes seems to work:

 1) In boost/atomic/detail/platform/platform.hpp
 % !diff
 diff ./platform.hpp ./platform.hpp_orig
 46c46
 < #elif (defined(__GNUC__) || (__SUNPRO_CC >= 0x5130)) &&
 (defined(__i386__) || defined(__x86_64__))
 ---
> #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 68c68
 < #elif (defined(__GNUC__) || (__SUNPRO_CC >= 0x5130)) && defined(__sparc)
 ---
> #elif defined(__GNUC__) && defined(__sparc_v9__)

 The above change causes the compilation to proceed further, however, it
 fails again with another configuration issue causing failure to build
 atomic library

 "CC" -std=c++11 -library=stdcpp,CrunG3 -xO4 -mt -erroff=%none -m32 -KPIC
 -DBOOST_ALL_NO_LIB=1 -DBOOST_ATOMIC_DYN_LINK=1 -DBOOST_ATOMIC_SOURCE
 -DNDEBUG -I"../../.." -c -o "../../../bin.v2/libs/atomic/build/sun/release
 /stdlib-gnu/threading-multi/lockpool.o"
 "../../../libs/atomic/src/lockpool.cpp"

 "../../../boost/atomic/detail/ops_gcc_sparc.hpp", line 69: Error: The
 function "fence_before_store" must have a prototype.

 In boost/atomic/detail/ops_gcc_sparc.hpp, the following change seems to
 resolve the issue

 % !diff
 % diff ./ops_gcc_sparc.hpp ./ops_gcc_sparc.hpp_orig
 69c69
 < fence_before(order);
 ---
> fence_before_store(order);
 71c71
 < fence_after(order);
 ---
> fence_after_store(order);
 110c110
 < fence_before(order);
 ---
> base_type::fence_before(order);
 118c118
 < fence_after(order);
 ---
> base_type::fence_after(order);

 The changes above successfully compiles the log sources.

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/12457>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:20 UTC