This patch solves two different issues at the same time when building
with gcc/g++ 9.2.0:
1) The -fvisibility=hidden support check was done using the C++
compiler only (with check_cxx_compiler_flag), inside the block
corresponding to the C compiler being GNU/clang, and the result of
the check was applied to both C++ (CXX_FLAGS) and C (C_FLAGS) flags.
Instead of this, there should be separate checks for the C and C++
compilers, each of them modifying a single set of <LANG>_FLAGS.
2) -Wincompatible-pointer-types support check was done using the C++
compiler only, and the result of the check was applied to both C++
(CXX_FLAGS) and C (C_FLAGS) flags. But, this warning is not
applicable to C++ and actually breaks compilation when using g++ 9.2:
[ 0%] Building CXX object lib/src/asn1/CMakeFiles/rrc_asn1.dir/rrc_asn1.cc.o
cc1plus: error: ‘-Werror=’ argument ‘-Werror=incompatible-pointer-types’ is not valid for C++ [-Werror]
Instead of this, there should be a check for this warning only using
the C compiler, and therefore only modifying the C flags (C_FLAGS).
This patch splits the macro into one specific for C++ (which modifies
CXX_FLAGS) and one specific for C (which modifies C_FLAGS). And so,
the macro call to check for `-Werror=incompatible-pointer-types' is
made C-only, and the one for `-fvisibility=hidden` is done for both C
and C++ targets (each on the correct GNU/clang compiler block).
Due to how the tests are done in cmake, the '-fvisibility=hidden'
check wasn't even succeding before, so the compiler option wasn't
being effectively used. The cmake flags.make file contents throughout
the project are updated as follows now:
Before this change, we had:
C_FLAGS = -Werror=incompatible-pointer-types ...
CXX_FLAGS = -Werror=incompatible-pointer-types ...
And after this change, we have:
C_FLAGS = -Werror=incompatible-pointer-types -fvisibility=hidden ...
CXX_FLAGS = -fvisibility=hidden ...
older gcc's (e.g gcc4.8) have issues with some const expressions
so they print warnings. we don't want to change the code because it is
fine with newer compilers. therefore we only enable -Werror for
newer versions of gcc
* New parallel Turbodecoder implementation in SSE/AVX 16-bit and 8-bit
* Optimised UL Interleaver
* Include TB CRC calculation in FEC encoder
* New threading priorities
* Consolidated functions in S1AP
* Fixed ASAN in some GCC
* Stop quicker the enb
* Minor typo edit
* Fixed mutexing issues in RRC and possibly RLC/PDCP when adding/removing users
* merge with origin 4fc7dbc38daa8346
* fixed whitespace diff
* added .gitignore
* added format warning flags to C_FLAGS
added typelimit check to C_FLAGS and CXX_CLAGS
* Revert "added format warning flags to C_FLAGS"
Apply to branch format_and_typelimt branch
This reverts commit bf7467e82e.
* check for format warnings to top level C_FLAGS
added typelimit warnings to top level C_FLAGS and CXX_FLAGS
beset effort attempt to remedy warnings
removed unused param names in hex_log baseclass methods due to multitude of unused-warnings
* merge with origin 4fc7dbc38daa8346
* fixed whitespace diff
* added .gitignore
* added format warning flags to C_FLAGS
added typelimit check to C_FLAGS and CXX_CLAGS
* Revert "added format warning flags to C_FLAGS"
Apply to branch format_and_typelimt branch
This reverts commit bf7467e82e.
* check for format warnings to top level C_FLAGS
added typelimit warnings to top level C_FLAGS and CXX_FLAGS
beset effort attempt to remedy warnings
removed unused param names in hex_log baseclass methods due to multitude of unused-warnings