[FFmpeg-trac] #6049(avutil:new): ICC 14: identifier "ATOMIC_VAR_INIT" is undefined
FFmpeg
trac at avcodec.org
Wed Dec 28 02:30:26 EET 2016
#6049: ICC 14: identifier "ATOMIC_VAR_INIT" is undefined
-------------------------------------+-------------------------------------
Reporter: barsnick | Type: defect
Status: new | Priority: normal
Component: avutil | Version: git-
Keywords: icc atomics | master
Blocking: | Blocked By:
Analyzed by developer: 0 | Reproduced by developer: 0
-------------------------------------+-------------------------------------
Summary of the bug:
ffmpeg fails to compile with ICC14, due to missing definition of
ATOMIC_VAR_INIT.
How to reproduce:
Configure ffmpeg with ICC-14.0.3. Compile
{{{
barsnick at sunshine:/usr/new/tools/video/ffmpeg > (cd ffmpeg-
build-2016-12-27/ && hilite make V=1)
icc -I. -I./ -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DOPJ_STATIC -DZLIB_CONST
-DHAVE_AV_CONFIG_H -std=c99 -fomit-frame-pointer -pthread
-I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/freetype2
-I/usr/kerberos/include -I/usr/include/tesseract -I/usr/include/leptonica
-I/usr/new/tools/video/install/x264/20160703/include -D_REENTRANT
-I/usr/include/SDL2 -g -Wdeclaration-after-statement -Wall -Wdisabled-
optimization -Wpointer-arith -Wredundant-decls -Wwrite-strings -Wtype-
limits -Wundef -Wmissing-prototypes -Wno-pointer-to-int-cast -Wstrict-
prototypes -Wempty-body -Wno-parentheses -Wno-switch -Wno-format-zero-
length -Wno-pointer-sign -Wno-unused-const-variable -O3 -fno-math-errno
-fno-signed-zeros -w1
-wd144,167,188,556,1292,1419,10006,10148,10156,13200,13203 -falign-
stack=maintain-16-byte -MMD -c -o libavutil/cpu.o libavutil/cpu.c
libavutil/cpu.c(48): error: identifier "ATOMIC_VAR_INIT" is undefined
static atomic_int cpu_flags = ATOMIC_VAR_INIT(-1);
^
libavutil/cpu.c(48): error: function call is not allowed in a constant
expression
static atomic_int cpu_flags = ATOMIC_VAR_INIT(-1);
^
compilation aborted for libavutil/cpu.c (code 2)
make: *** [libavutil/cpu.o] Error 2
barsnick at sunshine:/usr/new/tools/video/ffmpeg > icc --version
icc (ICC) 14.0.3 20140422
Copyright (C) 1985-2014 Intel Corporation. All rights reserved.
barsnick at sunshine:/usr/new/tools/video/ffmpeg >
}}}
At quick glance, I believe this is because configuration with ICC passes
the "stdatomic_h" test, but ICC fails to provide the said macro, which is
assumed by ffmpeg to be present.
{{{
check_builtin stdatomic_h stdatomic.h atomic_int foo; atomic_store(&foo,
0)
check_code ld stdatomic.h atomic_int foo; atomic_store(&foo, 0) cc
check_ld cc
check_cc
BEGIN /tmp/ffconf.IcsNTRsq.c
1 #include <stdatomic.h>
2 int main(void) { atomic_int foo; atomic_store(&foo, 0); return 0;
}
END /tmp/ffconf.IcsNTRsq.c
icc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -std=c99 -fomit-frame-pointer
-c -o /tmp/ffconf.R48HrWHU.o /tmp/ffconf.IcsNTRsq.c
icc -Wl,--as-needed -Wl,-z,noexecstack -o /tmp/ffconf.9NysBQnz
/tmp/ffconf.R48HrWHU.o -lrt
}}}
The issue was probably exposed with the first actual use of
ATOMIC_VAR_INIT with commit fed50c4304eecb352e29ce789cdb96ea84d6162f. I'm
too lazy/sleepy to bisect, but it seems obvious to me.
fate.ffmpeg.org seems to expose the same error, though I can only find one
ICC build there, and don't know how to find older attempts.
http://fate.ffmpeg.org/report.cgi?time=20161227220741&slot=x86_64
-archlinux-icc-2013
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6049>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list