Skip to content
Commit 0d25df4a authored by Dimitry Andric's avatar Dimitry Andric
Browse files

devel/aws-c-common: detect -moutline-atomics correctly

During an exp-run for llvm 12 (see bug 255570), it turned out that
security/aws-c-cal does not build with clang 12.0.0, at least not on
amd64:

-- The C compiler identification is Clang 12.0.0
[...]
-- Performing Test HAS_MOUTLINE_ATOMICS
-- Performing Test HAS_MOUTLINE_ATOMICS - Success
[...]
FAILED: CMakeFiles/aws-c-cal.dir/source/der.c.o
/usr/bin/cc -DAWS_CAL_EXPORTS -DAWS_CAL_USE_IMPORT_EXPORT -DAWS_COMMON_USE_IMPORT_EXPORT -DHAVE_SYSCONF -Daws_c_cal_EXPORTS -I/wrkdirs/usr/ports/security/aws-c-cal/work/aws-c-cal-0.4.5/include -isystem /usr/local/include -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing -fPIC -Wall -Werror -Wstrict-prototypes -fno-omit-frame-pointer -pedantic -Wno-long-long -fPIC -moutline-atomics -Wgnu -Wno-gnu-zero-variadic-macro-arguments -fvisibility=hidden -std=gnu99 -MD -MT CMakeFiles/aws-c-cal.dir/source/der.c.o -MF CMakeFiles/aws-c-cal.dir/source/der.c.o.d -o CMakeFiles/aws-c-cal.dir/source/der.c.o -c /wrkdirs/usr/ports/security/aws-c-cal/work/aws-c-cal-0.4.5/source/der.c
cc: error: The 'x86_64' architecture does not support -moutline-atomics; flag ignored [-Werror,-Woption-ignored]

This port uses /usr/local/lib/cmake/AwsCFlags.cmake to detect the
-moutline-atomics flag, but it does so by checking if the compiler
prints an *error* when using the flag. It could be debated that CMake's
check_c_compiler_flag() functionality is rather broken in that sense, as
it does not exhaustively scan for warnings from the compiler.

On the other hand, security/aws-c-cal compiles with -Werror, so then you
get an error for such warnings. Instead of hacking around it in
security/aws-c-cal, fix it in devel/aws-c-common instead, simply by
adding -Werror to the HAS_MOUTLINE_ATOMICS check.

This will ensure that it does *not* get enabled on x86, where it is not
functional, and will still get enabled on e.g. aarch64, for which this
flag is meant.

Approved by:	maintainer timeout (2 weeks)
PR:		255913
MFH:		2021Q2
parent 6f95cc52
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment