BewareMyPower opened a new pull request #14402:
URL: https://github.com/apache/pulsar/pull/14402


   ### Motivation
   
   When I tried to build the C++ client with GCC 7.3 and when warnings are
   printed (because `BOOST_ARCH_X86_64` is not defined), the compilation
   failed with:
   
   ```
   #warning “BOOST_ARCH_X86_64 is not defined, CRC32C SSE4.2 will be disabled”
     ^~~~~~~
   cc1plus: error: unrecognized command line option '-Wno-stringop-truncation' 
[-Werror]
   cc1plus: all warnings being treated as errors
   ```
   
   It seems to be a bug before GCC 8.1. I added
   `-DCMAKE_VERBOSE_MAKEFILE=ON` to CMake command and see the full compile
   command:
   
   ```
   -Wno-error -Wall -Wformat-security -Wvla -Werror -Wno-sign-compare 
-Wno-deprecated-declarations -Wno-error=cpp -Wno-stringop-truncation
   ```
   
   See
   
https://github.com/apache/pulsar/blob/b829a4ce121268f55748bbdd6f19ac36129e7dab/pulsar-client-cpp/CMakeLists.txt#L105-L106
   
   For GCC > 4.9, `-Wno-stringop-truncation` option was added. However,
   when a message was printed by `#warning` macro, it would fail with the
   strange error message.
   
   The simplest way to reproduce the bug is compiling following code:
   
   ```c++
   #warnings "hello"
   
   int main() {}
   ```
   
   You can paste the code above to https://godbolt.org/, select any GCC
   compiler whose version is lower than 8.0, then add the following
   options:
   
   ```
   -Werror -Wno-error=cpp -Wno-stringop-truncation
   ```
   
   The compilation failed for x86-64 gcc 7.5 while it succeeded for 8.1.
   
   ### Modifications
   
   Only add the `-Wno-stringop-truncation` option for GCC >= 8.1.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to