Closed
Bug 928091
Opened 11 years ago
Closed 11 years ago
libopus fails to build using Visual Studio 2013 RTM and 2012
Categories
(Core :: MFBT, defect)
Core
MFBT
Tracking
()
RESOLVED
FIXED
mozilla27
People
(Reporter: emk, Assigned: ehsan.akhgari)
References
Details
Attachments
(1 file, 3 obsolete files)
(deleted),
patch
|
cpeterson
:
review+
rillian
:
feedback+
|
Details | Diff | Splinter Review |
/nss -MD -FI ../../dist/include/mozilla-config.h -DMOZILLA_CLIE
NT -TC -nologo -W3 -Gy -Fdgenerated.pdb -FS -wd4244 -wd4819 -we4553 -DNDEBUG -
DTRIMMED -Zi -UDEBUG -DNDEBUG -O1 -Oy h:/m/mozilla-central/media/libopus/silk/f
loat/schur_FLP.c' failed, return code 1
21:05.90 sort_FLP.c
21:05.90 Warning: C4005 in C:\Program Files (x86)\Microsoft Visual Studio 12.0\V
C\INCLUDE\xkeycheck.h: 'inline' : マクロが再定義されました。
21:05.91 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xkeychec
k.h(65) : warning C4005: 'inline' : マクロが再定義されました。
21:05.91 コマンド ラインの引数 : 'inline' の前の定義を確認してください
21:05.91 Warning: C4005 in C:\Program Files (x86)\Microsoft Visual Studio 12.0\V
C\INCLUDE\xkeycheck.h: 'restrict' : マクロが再定義されました。
21:05.92 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xkeychec
k.h(69) : warning C4005: 'restrict' : マクロが再定義されました。
21:05.92 コマンド ラインの引数 : 'restrict' の前の定義を確認してください
21:05.92 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xkeychec
k.h(87) : fatal error C1189: #error : The C Standard Library forbids macroizing
keywords. Enable warning C4005 to find the forbidden macro.
21:05.92 2
21:05.93 h:\m\mozilla-central\config\rules.mk:1109:0: command 'h:/m/mozilla-cent
ral/obj-i686-pc-mingw32/_virtualenv/Scripts/python.exe -O h:/m/mozilla-central/b
uild/cl.py cl -Fosort_FLP.obj -c -DOPUS_BUILD -DOPUS_VERSION='"v1.1-beta-23-gf2
446c2-mozilla"' -DUSE_ALLOCA -Drestrict= -Dinline=__inline -DNO_NSPR_10_SUPPORT
-Ih:/m/mozilla-central/media/libopus/include -Ih:/m/mozilla-central/media/libop
us/celt -Ih:/m/mozilla-central/media/libopus/silk -Ih:/m/mozilla-central/media/l
ibopus/src -Ih:/m/mozilla-central/media/libopus/silk/float -Ih:/m/mozilla-centr
al/media/libopus -I. -I../../dist/include -Ih:/m/mozilla-central/obj-i686-pc-mi
ngw32/dist/include/nspr -Ih:/m/mozilla-central/obj-i686-pc-mingw32/dist/include/
nss -MD -FI ../../dist/include/mozilla-config.h -DMOZILLA_CLIEN
T -TC -nologo -W3 -Gy -Fdgenerated.pdb -FS -wd4244 -wd4819 -we4553 -DNDEBUG -D
TRIMMED -Zi -UDEBUG -DNDEBUG -O1 -Oy h:/m/mozilla-central/media/libopus/silk/fl
oat/sort_FLP.c' failed, return code 1
21:05.94 <opus.lib.desc>: Found error
21:05.94 <opus.lib.desc>: Found error
21:05.94 <opus.lib.desc>: Found error
21:05.94 <opus.lib.desc>: Found error
21:05.94 <opus.lib.desc>: Found error
21:05.94 <opus.lib.desc>: Found error
21:05.94 <opus.lib.desc>: Found error
21:05.94 <opus.lib.desc>: Found error
21:05.95 <opus.lib.desc>: Found error
21:05.95 <opus.lib.desc>: Found error
21:05.95 <opus.lib.desc>: Found error
21:05.95 <opus.lib.desc>: Found error
21:05.95 <opus.lib.desc>: Found error
21:05.95 <opus.lib.desc>: Found error
21:05.96 <opus.lib.desc>: Found error
21:05.96 <opus.lib.desc>: Found error
21:05.96 <opus.lib.desc>: Found error
21:05.96 <opus.lib.desc>: Found error
21:05.96 <opus.lib.desc>: Found error
21:05.96 <opus.lib.desc>: Found error
21:05.96 <opus.lib.desc>: Found error
21:05.96 <opus.lib.desc>: Found error
21:05.96 <opus.lib.desc>: Found error
21:05.97 <opus.lib.desc>: Found error
21:05.97 <opus.lib.desc>: Found error
21:05.97 <opus.lib.desc>: Found error
21:05.97 <opus.lib.desc>: Found error
21:05.97 <opus.lib.desc>: Found error
21:05.97 <opus.lib.desc>: Found error
21:05.97 <opus.lib.desc>: Found error
21:05.97 <opus.lib.desc>: Found error
21:05.97 <opus.lib.desc>: Found error
21:05.97 <opus.lib.desc>: Found error
21:05.97 <opus.lib.desc>: Found error
21:05.97 <opus.lib.desc>: Found error
21:05.98 <opus.lib.desc>: Found error
21:05.98 <opus.lib.desc>: Found error
21:05.98 <opus.lib.desc>: Found error
21:05.98 <opus.lib.desc>: Found error
21:05.98 <opus.lib.desc>: Found error
21:05.98 <opus.lib.desc>: Found error
21:05.98 <opus.lib.desc>: Found error
21:05.98 <opus.lib.desc>: Found error
21:05.98 <opus.lib.desc>: Found error
21:05.98 <opus.lib.desc>: Found error
21:05.98 <opus.lib.desc>: Found error
21:05.98 <opus.lib.desc>: Found error
21:05.98 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:05.99 <opus.lib.desc>: Found error
21:06.00 <opus.lib.desc>: Found error
21:06.00 <opus.lib.desc>: Found error
21:06.00 <opus.lib.desc>: Found error
21:06.00 <opus.lib.desc>: Found error
21:06.00 <opus.lib.desc>: Found error
21:06.00 <opus.lib.desc>: Found error
21:06.00 <opus.lib.desc>: Found error
21:06.00 <opus.lib.desc>: Found error
21:06.00 <opus.lib.desc>: Found error
21:06.00 <opus.lib.desc>: Found error
21:06.00 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.01 <opus.lib.desc>: Found error
21:06.02 <opus.lib.desc>: Found error
21:06.02 <opus.lib.desc>: Found error
21:06.02 <opus.lib.desc>: Found error
21:06.02 <opus.lib.desc>: Found erroranalysis.c
21:06.02 Warning: C4005 in C:\Program Files (x86)\Microsoft Visual Studio 12.0\V
C\INCLUDE\xkeycheck.h: 'inline' : マクロが再定義されました。
21:06.02 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xkeychec
k.h(65) : warning C4005: 'inline' : マクロが再定義されました。
21:06.02 コマンド ラインの引数 : 'inline' の前の定義を確認してください
21:06.03 Warning: C4005 in C:\Program Files (x86)\Microsoft Visual Studio 12.0\V
C\INCLUDE\xkeycheck.h: 'restrict' : マクロが再定義されました。
21:06.03 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xkeychec
k.h(69) : warning C4005: 'restrict' : マクロが再定義されました。
21:06.03 コマンド ラインの引数 : 'restrict' の前の定義を確認してください
21:06.03 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xkeychec
k.h(87) : fatal error C1189: #error : The C Standard Library forbids macroizing
keywords. Enable warning C4005 to find the forbidden macro.
21:06.04
21:06.04 <opus.lib.desc>: Found error
21:06.04 <opus.lib.desc>: Found error
21:06.04 <opus.lib.desc>: Found error
21:06.04 <opus.lib.desc>: Found error
21:06.04 <opus.lib.desc>: Found error
21:06.04 <opus.lib.desc>: Found error
21:06.04 <opus.lib.desc>: Found error
21:06.05 <opus.lib.desc>: Found error
21:06.05 <opus.lib.desc>: Found error
21:06.05 <opus.lib.desc>: Found error
21:06.05 <opus.lib.desc>: Found error
21:06.05 <opus.lib.desc>: Found error
21:06.05 <opus.lib.desc>: Found error
21:06.06 <opus.lib.desc>: Found error
21:06.06 <opus.lib.desc>: Found error
21:06.06 <opus.lib.desc>: Found error
21:06.06 <opus.lib.desc>: Found error
21:06.07 <opus.lib.desc>: Found error
21:06.08 <opus.lib.desc>: Found error2
21:06.09
21:06.10 <opus.lib.desc>: Found error
21:06.10 <opus.lib.desc>: Found error
21:06.10 <opus.lib.desc>: Found error
21:06.10 <opus.lib.desc>: Found error
21:06.10 <opus.lib.desc>: Found error
21:06.10 <opus.lib.desc>: Found error
21:06.11 <opus.lib.desc>: Found error
21:06.11 <opus.lib.desc>: Found error
21:06.11 <opus.lib.desc>: Found error
21:06.11 <opus.lib.desc>: Found error
21:06.11 <opus.lib.desc>: Found error
21:06.12 <opus.lib.desc>: Found error
21:06.13 <opus.lib.desc>: Found error
21:06.13 <opus.lib.desc>: Found error
21:06.15 <opus.lib.desc>: Found error
21:06.15 <opus.lib.desc>: Found error
21:06.15 h:\m\mozilla-central\config\rules.mk:1109:0: command 'h:/m/mozilla-cent
ral/obj-i686-pc-mingw32/_virtualenv/Scripts/python.exe -O h:/m/mozilla-central/b
uild/cl.py cl -Foanalysis.obj -c -DOPUS_BUILD -DOPUS_VERSION='"v1.1-beta-23-gf2
446c2-mozilla"' -DUSE_ALLOCA -Drestrict= -Dinline=__inline -DNO_NSPR_10_SUPPORT
-Ih:/m/mozilla-central/media/libopus/include -Ih:/m/mozilla-central/media/libop
us/celt -Ih:/m/mozilla-central/media/libopus/silk -Ih:/m/mozilla-central/media/l
ibopus/src -Ih:/m/mozilla-central/media/libopus/silk/float -Ih:/m/mozilla-centr
al/media/libopus -I. -I../../dist/include -Ih:/m/mozilla-central/obj-i686-pc-mi
ngw32/dist/include/nspr -Ih:/m/mozilla-central/obj-i686-pc-mingw32/dist/include/
nss -MD -FI ../../dist/include/mozilla-config.h -DMOZILLA_CLIEN
T -TC -nologo -W3 -Gy -Fdgenerated.pdb -FS -wd4244 -wd4819 -we4553 -DNDEBUG -D
TRIMMED -Zi -UDEBUG -DNDEBUG -O1 -Oy h:/m/mozilla-central/media/libopus/src/ana
lysis.c' failed, return code 1
21:06.16 <opus.lib.desc>: Found error
21:06.23 mlp.c
21:06.23 Warning: C4005 in C:\Program Files (x86)\Microsoft Visual Studio 12.0\V
C\INCLUDE\xkeycheck.h: 'inline' : マクロが再定義されました。
21:06.23 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xkeychec
k.h(65) : warning C4005: 'inline' : マクロが再定義されました。
21:06.24 コマンド ラインの引数 : 'inline' の前の定義を確認してください
21:06.24 Warning: C4005 in C:\Program Files (x86)\Microsoft Visual Studio 12.0\V
C\INCLUDE\xkeycheck.h: 'restrict' : マクロが再定義されました。
21:06.25 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xkeychec
k.h(69) : warning C4005: 'restrict' : マクロが再定義されました。
21:06.25 コマンド ラインの引数 : 'restrict' の前の定義を確認してください
21:06.25 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xkeychec
k.h(87) : fatal error C1189: #error : The C Standard Library forbids macroizing
keywords. Enable warning C4005 to find the forbidden macro.
21:06.25 2
21:06.25 h:\m\mozilla-central\config\rules.mk:1109:0: command 'h:/m/mozilla-cent
ral/obj-i686-pc-mingw32/_virtualenv/Scripts/python.exe -O h:/m/mozilla-central/b
uild/cl.py cl -Fomlp.obj -c -DOPUS_BUILD -DOPUS_VERSION='"v1.1-beta-23-gf2446c2
-mozilla"' -DUSE_ALLOCA -Drestrict= -Dinline=__inline -DNO_NSPR_10_SUPPORT -Ih:
/m/mozilla-central/media/libopus/include -Ih:/m/mozilla-central/media/libopus/ce
lt -Ih:/m/mozilla-central/media/libopus/silk -Ih:/m/mozilla-central/media/libopu
s/src -Ih:/m/mozilla-central/media/libopus/silk/float -Ih:/m/mozilla-central/me
dia/libopus -I. -I../../dist/include -Ih:/m/mozilla-central/obj-i686-pc-mingw32
/dist/include/nspr -Ih:/m/mozilla-central/obj-i686-pc-mingw32/dist/include/nss
-MD -FI ../../dist/include/mozilla-config.h -DMOZILLA_CLIENT -T
C -nologo -W3 -Gy -Fdgenerated.pdb -FS -wd4244 -wd4819 -we4553 -DNDEBUG -DTRIMM
ED -Zi -UDEBUG -DNDEBUG -O1 -Oy h:/m/mozilla-central/media/libopus/src/mlp.c' f
ailed, return code 1
21:06.25 <opus.lib.desc>: Found error
21:06.30 mlp_data.c
21:06.30 Warning: C4005 in C:\Program Files (x86)\Microsoft Visual Studio 12.0\V
C\INCLUDE\xkeycheck.h: 'inline' : マクロが再定義されました。
21:06.30 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xkeychec
k.h(65) : warning C4005: 'inline' : マクロが再定義されました。
21:06.30 コマンド ラインの引数 : 'inline' の前の定義を確認してください
21:06.31 Warning: C4005 in C:\Program Files (x86)\Microsoft Visual Studio 12.0\V
C\INCLUDE\xkeycheck.h: 'restrict' : マクロが再定義されました。
21:06.31 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xkeychec
k.h(69) : warning C4005: 'restrict' : マクロが再定義されました。
21:06.31 コマンド ラインの引数 : 'restrict' の前の定義を確認してください
21:06.31 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xkeychec
k.h(87) : fatal error C1189: #error : The C Standard Library forbids macroizing
keywords. Enable warning C4005 to find the forbidden macro.
21:06.31 2
21:06.31 h:\m\mozilla-central\config\rules.mk:1109:0: command 'h:/m/mozilla-cent
ral/obj-i686-pc-mingw32/_virtualenv/Scripts/python.exe -O h:/m/mozilla-central/b
uild/cl.py cl -Fomlp_data.obj -c -DOPUS_BUILD -DOPUS_VERSION='"v1.1-beta-23-gf2
446c2-mozilla"' -DUSE_ALLOCA -Drestrict= -Dinline=__inline -DNO_NSPR_10_SUPPORT
-Ih:/m/mozilla-central/media/libopus/include -Ih:/m/mozilla-central/media/libop
us/celt -Ih:/m/mozilla-central/media/libopus/silk -Ih:/m/mozilla-central/media/l
ibopus/src -Ih:/m/mozilla-central/media/libopus/silk/float -Ih:/m/mozilla-centr
al/media/libopus -I. -I../../dist/include -Ih:/m/mozilla-central/obj-i686-pc-mi
ngw32/dist/include/nspr -Ih:/m/mozilla-central/obj-i686-pc-mingw32/dist/include/
nss -MD -FI ../../dist/include/mozilla-config.h -DMOZILLA_CLIEN
T -TC -nologo -W3 -Gy -Fdgenerated.pdb -FS -wd4244 -wd4819 -we4553 -DNDEBUG -D
TRIMMED -Zi -UDEBUG -DNDEBUG -O1 -Oy h:/m/mozilla-central/media/libopus/src/mlp
_data.c' failed, return code 1
21:06.32 <opus.lib.desc>: Found error
21:06.32 <libs>: Found error
21:06.32 evaluation from h:\m\mozilla-central\config\recurse.mk:186:53:7:0: comm
and 'c:/mozilla-build/python/python.exe h:/m/mozilla-central/build/pymake/pymake
/../make.py -C ../../media/libopus libs' failed, return code 2
21:06.32 evaluation from h:\m\mozilla-central\config\recurse.mk:186:53:12:0: com
mand 'c:/mozilla-build/python/python.exe h:/m/mozilla-central/build/pymake/pymak
e/../make.py ../../db/sqlite3/src_libs ../../media/libjpeg_libs ../../modules/li
bbz2_libs ../../media/libvorbis_libs ../../media/libopus_libs ../../media/libnes
tegg_libs ../../media/libvpx_libs ../../media/libogg_libs ../../media/libtheora_
libs ../../media/libspeex_resampler_libs ../../media/libsoundtouch_libs ../../me
dia/libcubeb_libs ../../media/libpng_libs ../../media/kiss_fft_libs' failed, ret
urn code 2
21:06.32 h:\m\mozilla-central\config\recurse.mk:159:0: command 'c:/mozilla-build
/python/python.exe h:/m/mozilla-central/build/pymake/pymake/../make.py -C config
/external libs' failed, return code 2
21:06.33 h:\m\mozilla-central\config\rules.mk:697:0: command 'c:/mozilla-build/p
ython/python.exe h:/m/mozilla-central/build/pymake/pymake/../make.py libs' faile
d, return code 2
21:06.33 h:\m\mozilla-central\client.mk:394:0: command 'c:/mozilla-build/python/
python.exe h:/m/mozilla-central/build/pymake/pymake/../make.py -j4 -C obj-i686-p
c-mingw32' failed, return code 2
21:06.33 h:\m\mozilla-central\client.mk:179:0: command 'c:/mozilla-build/python/
python.exe h:/m/mozilla-central/build/pymake/pymake/../make.py -f h:/m/mozilla-c
entral/client.mk realbuild' failed, return code 2
21:06.36 From ./dist/sdk: Kept 0 existing; Added/updated 0; Removed 0 files and
1 directories.
21:06.36 From ./dist/public: Kept 0 existing; Added/updated 0; Removed 0 files a
nd 1 directories.
21:06.36 From ./dist/private: Kept 0 existing; Added/updated 0; Removed 0 files
and 1 directories.
21:06.37 From ../../dist/idl: Kept 1165 existing; Added/updated 0; Removed 0 fil
es and 0 directories.
21:06.37 From ./dist/idl: Kept 0 existing; Added/updated 1165; Removed 0 files a
nd 0 directories.
21:06.37 From ./dist/bin: Kept 0 existing; Added/updated 0; Removed 0 files and
1 directories.
21:06.37 From _tests: Kept 11 existing; Added/updated 11428; Removed 0 files and
0 directories.
21:06.37 From ./dist/include: Kept 1617 existing; Added/updated 1966; Removed 0
files and 0 directories.
21:06.51 421 compiler warnings present.
2
Reporter | ||
Comment 1•11 years ago
|
||
VC2013 doesn't support "inline" while it forbids macroizing "inline"! WTF!?
Reporter | ||
Comment 2•11 years ago
|
||
Comment 3•11 years ago
|
||
I also get this error in VS2012. :(
Comment 5•11 years ago
|
||
Current theory (#media just now):
[10:52] abr cpearce: It looks like this would be sensitive to inclusion of standard library constructs -- the xkeycheck.h file apparently does not perform this check except as included by standard libraries.
[10:53] ehsan cpearce: https://bugzilla.mozilla.org/show_bug.cgi?id=928091
[10:53] abr cpearce: And the switchover to char16_t may well have move standard library includes into the compilation for this file
Comment 6•11 years ago
|
||
Fix build with MSVC 2012 as well as 2013.
Attachment #818698 -
Attachment is obsolete: true
Attachment #818698 -
Flags: review?(ted)
Attachment #818728 -
Flags: review?(ted)
Updated•11 years ago
|
Summary: libopus fails to build using Visual Studio 2013 RTM → libopus fails to build using Visual Studio 2013 RTM and 2012
Comment 7•11 years ago
|
||
I also get the same error building netwerk/srtp/src/crypto/cipher/aes.c and a bunch of files in netwerk/srtp/src/crypto/hash/
Reporter | ||
Comment 8•11 years ago
|
||
Maybe we should add _ALLOW_KEYWORD_MACROS to configure rather than local Makefiles?
https://mxr.mozilla.org/mozilla-central/source/configure.in?rev=0df04ffc2246#432
Comment 9•11 years ago
|
||
Worth trying. That would probably be easier than playing whackamole with all these bustages as they happen.
Comment 10•11 years ago
|
||
Build also fails in /media/mtransport/third_party/nICEr
Comment 11•11 years ago
|
||
Always define _ALLOW_KEYWORD_MACROS, so that we don't get build failures when building with VS2012 and VS2013.
r? glandium, seeing as he's more likely to be awake...
Assignee: VYV03354 → cpearce
Attachment #818806 -
Flags: review?(mh+mozilla)
Updated•11 years ago
|
Attachment #818728 -
Flags: review?(ted)
Comment 12•11 years ago
|
||
Updated•11 years ago
|
Attachment #818806 -
Flags: review?(mh+mozilla) → review+
Reporter | ||
Comment 13•11 years ago
|
||
Perhaps it's better to add -D_ALLOW_KEYWORD_MACROS to CFLAGS because MSVC supports "inline" in C++ mode. This error should be C mode specific.
Comment 14•11 years ago
|
||
Build errors on try, WinXP debug (Win7 builder):
https://tbpl.mozilla.org/php/getParsedLog.php?id=29286540
ArrayBufferInputStream.cpp
c:\tools\msvs10\vc\include\yvals.h(12) : error C2220: warning treated as error - no 'object' file generated
c:\tools\msvs10\vc\include\yvals.h(12) : warning C4005: '_ALLOW_KEYWORD_MACROS' : macro redefinition
e:\builds\moz2_slave\try-w32-d-00000000000000000000\build\obj-firefox\ipc\ipdl\_ipdlheaders\../../../dist/include/mozilla-config.h(137) : see previous definition of '_ALLOW_KEYWORD_MACROS'
e:\builds\moz2_slave\try-w32-d-00000000000000000000\build\config\rules.mk:1141:0: command 'e:/builds/moz2_slave/try-w32-d-00000000000000000000/build/obj-firefox/_virtualenv/Scripts/python.exe -O e:/builds/moz2_slave/try-w32-d-00000000000000000000/build/build/cl.py cl -FoArrayBufferInputStream.obj -c -D_HAS_EXCEPTIONS=0 -I../../../dist/stl_wrappers -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DNO_NSPR_10_SUPPORT -DUNICODE -D_UNICODE -DNOMINMAX -D_CRT_RAND_S -DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS -D_SECURE_ATL -DCHROMIUM_BUILD -DU_STATIC_IMPLEMENTATION -DOS_WIN=1 -DWIN32 -D_WIN32 -D_WINDOWS -DWIN32_LEAN_AND_MEAN -DCOMPILER_MSVC -Ie:/builds/moz2_slave/try-w32-d-00000000000000000000/build/dom/base -Ie:/builds/moz2_slave/try-w32-d-00000000000000000000/build/ipc/chromium/src -Ie:/builds/moz2_slave/try-w32-d-00000000000000000000/build/ipc/glue -I../../../ipc/ipdl/_ipdlheaders -Ie:/builds/moz2_slave/try-w32-d-00000000000000000000/build/netwerk/base/src -I. -I../../../dist/include -Ie:/builds/moz2_slave/try-w32-d-00000000000000000000/build/obj-firefox/dist/include/nspr -Ie:/builds/moz2_slave/try-w32-d-00000000000000000000/build/obj-firefox/dist/include/nss -MDd -FI ../../../dist/include/mozilla-config.h -DMOZILLA_CLIENT -wd4099 -TP -nologo -W3 -Gy -Fdgenerated.pdb -wd4251 -wd4244 -wd4345 -wd4351 -wd4482 -wd4800 -wd4819 -we4553 -GR- -DDEBUG -D_DEBUG -DTRACING -Zi -O1 -Oy- -WX e:/builds/moz2_slave/try-w32-d-00000000000000000000/build/netwerk/base/src/ArrayBufferInputStream.cpp' failed, return code 1
e:\builds\moz2_slave\try-w32-d-00000000000000000000\build\config\rules.mk:1141:0$ e:/builds/moz2_slave/try-w32-d-00000000000000000000/build/obj-firefox/_virtualenv/Scripts/python.exe -O e:/builds/moz2_slave/try-w32-d-00000000000000000000/build/build/cl.py cl -FoLoadContextInfo.obj -c -D_HAS_EXCEPTIONS=0 -I../../../dist/stl_wrappers -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DNO_NSPR_10_SUPPORT -DUNICODE -D_UNICODE -DNOMINMAX -D_CRT_RAND_S -DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS -D_SECURE_ATL -DCHROMIUM_BUILD -DU_STATIC_IMPLEMENTATION -DOS_WIN=1 -DWIN32 -D_WIN32 -D_WINDOWS -DWIN32_LEAN_AND_MEAN -DCOMPILER_MSVC -Ie:/builds/moz2_slave/try-w32-d-00000000000000000000/build/dom/base -Ie:/builds/moz2_slave/try-w32-d-00000000000000000000/build/ipc/chromium/src -Ie:/builds/moz2_slave/try-w32-d-00000000000000000000/build/ipc/glue -I../../../ipc/ipdl/_ipdlheaders -Ie:/builds/moz2_slave/try-w32-d-00000000000000000000/build/netwerk/base/src -I. -I../../../dist/include -Ie:/builds/moz2_slave/try-w32-d-00000000000000000000/build/obj-firefox/dist/include/nspr -Ie:/builds/moz2_slave/try-w32-d-00000000000000000000/build/obj-firefox/dist/include/nss -MDd -FI ../../../dist/include/mozilla-config.h -DMOZILLA_CLIENT -wd4099 -TP -nologo -W3 -Gy -Fdgenerated.pdb -wd4251 -wd4244 -wd4345 -wd4351 -wd4482 -wd4800 -wd4819 -we4553 -GR- -DDEBUG -D_DEBUG -DTRACING -Zi -O1 -Oy- -WX e:/builds/moz2_slave/try-w32-d-00000000000000000000/build/netwerk/base/src/LoadContextInfo.cpp
2
Comment 15•11 years ago
|
||
(In reply to Masatoshi Kimura [:emk] from comment #13)
> Perhaps it's better to add -D_ALLOW_KEYWORD_MACROS to CFLAGS because MSVC
> supports "inline" in C++ mode. This error should be C mode specific.
Testing this to see if it fixes the previous build errors on Try, they were in CPP files:
https://tbpl.mozilla.org/?tree=Try&rev=e66572b3e3f2
Comment 16•11 years ago
|
||
Still failing in the .c files: https://tbpl.mozilla.org/php/getParsedLog.php?id=29289380&tree=Try#error0
punycode.c
c:\tools\msvs10\vc\include\yvals.h(12) : error C2220: warning treated as error - no 'object' file generated
c:\tools\msvs10\vc\include\yvals.h(12) : warning C4005: '_ALLOW_KEYWORD_MACROS' : macro redefinition
command-line arguments : see previous definition of '_ALLOW_KEYWORD_MACROS'
nameprep.c
c:\tools\msvs10\vc\include\yvals.h(12) : error C2220: warning treated as error - no 'object' file generated
c:\tools\msvs10\vc\include\yvals.h(12) : warning C4005: '_ALLOW_KEYWORD_MACROS' : macro redefinition
command-line arguments : see previous definition of '_ALLOW_KEYWORD_MACROS'
race.c
c:\tools\msvs10\vc\include\yvals.h(12) : error C2220: warning treated as error - no 'object' file generated
c:\tools\msvs10\vc\include\yvals.h(12) : warning C4005: '_ALLOW_KEYWORD_MACROS' : macro redefinition
command-line arguments : see previous definition of '_ALLOW_KEYWORD_MACROS'
Reporter | ||
Comment 18•11 years ago
|
||
Then the next try would be CFLAGS += -FIyvals.h.
Comment 19•11 years ago
|
||
Sounds like we want a conditional
#ifndef _ALLOW_KEYWORD_MACROS
#define _ALLOW_KEYWORD_MACROS
#endif
But I don't know a way to do that on the compiler command line.
Updated•11 years ago
|
Keywords: regressionwindow-wanted
Comment 20•11 years ago
|
||
(In reply to Ralph Giles (:rillian) from comment #19)
> Sounds like we want a conditional
>
> #ifndef _ALLOW_KEYWORD_MACROS
> #define _ALLOW_KEYWORD_MACROS
> #endif
>
> But I don't know a way to do that on the compiler command line.
Is this something that could be decided as a configure.in check, perhaps?
Reporter | ||
Comment 21•11 years ago
|
||
(In reply to Ralph Giles (:rillian) from comment #19)
> Sounds like we want a conditional
>
> #ifndef _ALLOW_KEYWORD_MACROS
> #define _ALLOW_KEYWORD_MACROS
> #endif
>
> But I don't know a way to do that on the compiler command line.
It wouldn't help because the -D command line switch would be evaluated *before* any other source files.
The offending code is in yvals.h which we have no control over.
Reporter | ||
Comment 22•11 years ago
|
||
(In reply to Alex Vincent [:WeirdAl] from comment #20)
> (In reply to Ralph Giles (:rillian) from comment #19)
> > Sounds like we want a conditional
> >
> > #ifndef _ALLOW_KEYWORD_MACROS
> > #define _ALLOW_KEYWORD_MACROS
> > #endif
> >
> > But I don't know a way to do that on the compiler command line.
>
> Is this something that could be decided as a configure.in check, perhaps?
We already tried AC_DEFINE(_ALLOW_KEYWORD_MACROS) and failed. (comment 14)
Comment 23•11 years ago
|
||
(In reply to Masatoshi Kimura [:emk] from comment #22)
> We already tried AC_DEFINE(_ALLOW_KEYWORD_MACROS) and failed. (comment 14)
That's not what I meant. The configure script can compile a small C++ program as a test to see if the compiler will work with the command-line macro definition. If so, then configure adds it to DEFINES.
Reporter | ||
Comment 24•11 years ago
|
||
(In reply to Alex Vincent [:WeirdAl] from comment #23)
> That's not what I meant. The configure script can compile a small C++
> program as a test to see if the compiler will work with the command-line
> macro definition. If so, then configure adds it to DEFINES.
I don't think it's worth the complexity because this is very specific to MSVC anyway.
Even worse, some .c codes require _ALLOW_KEYWORD_MACROS while some others reject. Maybe we will have to changing local Makefiles...
Assignee | ||
Comment 25•11 years ago
|
||
This may indeed have been caused by the char16_t change, since that pulls in yvals.h everywhere.
Assignee | ||
Comment 26•11 years ago
|
||
FWIW I'm looking into this guys, I have an idea of a fix... Building locally right now.
Assignee | ||
Updated•11 years ago
|
Assignee: cpearce → ehsan
Comment 27•11 years ago
|
||
even with the current patch, my build is still busted. windows 8.0, vaio, today's m-c with a clobber. :(
Assignee | ||
Comment 28•11 years ago
|
||
There are two problems here:
1. Char16.h pulls in yvals.h where it doesn't really need to. See this from yvals.h:
#ifndef _HAS_CHAR16_T_LANGUAGE_SUPPORT
#define _HAS_CHAR16_T_LANGUAGE_SUPPORT 0
#endif /* _HAS_CHAR16_T_LANGUAGE_SUPPORT */
/* uchar PROPERTIES */
#if _HAS_CHAR16_T_LANGUAGE_SUPPORT
#else /* _HAS_CHAR16_T_LANGUAGE_SUPPORT */
#if !defined(_CHAR16T)
#define _CHAR16T
typedef unsigned short char16_t;
typedef unsigned int char32_t;
#endif /* !defined(_CHAR16T) */
#endif /* _HAS_CHAR16_T_LANGUAGE_SUPPORT */
In order to prevent that header to screw with char16_t, all we need to do is to #define _CHAR16T.
2. Char16.h also #defines char16_t, which the xkeycheck.h which comes with VC11 and above checks. We can easily fix that to use a typedef.
Patch upcoming.
Assignee | ||
Updated•11 years ago
|
Component: Build Config → MFBT
Updated•11 years ago
|
Assignee | ||
Comment 29•11 years ago
|
||
Attachment #818728 -
Attachment is obsolete: true
Attachment #818806 -
Attachment is obsolete: true
Attachment #819228 -
Flags: review?(Pidgeot18)
Comment 30•11 years ago
|
||
Comment on attachment 819228 [details] [diff] [review]
Patch (v1)
Review of attachment 819228 [details] [diff] [review]:
-----------------------------------------------------------------
I don't feel comfortable reviewing this change.
Attachment #819228 -
Flags: review?(Pidgeot18) → review?(jwalden+bmo)
Assignee | ||
Comment 31•11 years ago
|
||
I decided to land this patch pending the review, and address the review comments later.
https://hg.mozilla.org/integration/mozilla-inbound/rev/f5052f28644e
Updated•11 years ago
|
Keywords: regressionwindow-wanted
Comment 32•11 years ago
|
||
Comment on attachment 819228 [details] [diff] [review]
Patch (v1)
Review of attachment 819228 [details] [diff] [review]:
-----------------------------------------------------------------
Sure, why not.
I have no idea how we're going to address the mingw situation, or the situation if (when?) MS makes char16_t a distinct type from anything else, including wchar_t. This seems to make that worse. Pfui. Maybe someone will come up with a magical fix even after these changes.
Attachment #819228 -
Flags: review?(jwalden+bmo) → review+
Comment 33•11 years ago
|
||
Comment on attachment 819228 [details] [diff] [review]
Patch (v1)
Review of attachment 819228 [details] [diff] [review]:
-----------------------------------------------------------------
Approach seems sound to me, thanks for looking at this, ehsan.
::: mfbt/Char16.h
@@ +21,5 @@
> * C++11 says char16_t is a distinct builtin type, but Windows's yvals.h
> * typedefs char16_t as an unsigned short. We would like to alias char16_t
> * to Windows's 16-bit wchar_t so we can declare UTF-16 literals as constant
> + * expressions (and pass char16_t pointers to Windows APIs). We #define
> + * _CHAR16T here in order to prevent yvals.h to override our char16_t
This should be "...to prevent yvals.h from overriding our char16_t"
@@ +32,3 @@
> */
> # define MOZ_UTF16_HELPER(s) L##s
> +# define _CHAR16T
I'm confused that you removed the yvals.h include. Was it not needed before for wchar_t?
Attachment #819228 -
Flags: review?(jwalden+bmo)
Attachment #819228 -
Flags: review+
Attachment #819228 -
Flags: feedback+
Comment 34•11 years ago
|
||
(In reply to Ralph Giles (:rillian) from comment #33)
> @@ +32,3 @@
> > */
> > # define MOZ_UTF16_HELPER(s) L##s
> > +# define _CHAR16T
>
> I'm confused that you removed the yvals.h include. Was it not needed before
> for wchar_t?
We didn't need yvals.h for wchar_t. (I think we compile with wchar_t or __wchar_t as a builtin type.) yvals.h was included to ensure that Microsoft's char16_t typedef was defined before we override it with #define char16_t. If we didn't include yvals.h here, then some Windows header file will include it later and fail to compile because our #define chart16_t would stomp on yvals.h's typedef definition.
(I wrote the original Char16.h, but I haven't been following how the current version works.)
Comment 35•11 years ago
|
||
Great, that makes sense. Thanks for clarifying, Chris.
Comment 36•11 years ago
|
||
Comment on attachment 819228 [details] [diff] [review]
Patch (v1)
I think Ralph's f+ accidentally stomped on jwalden's r+.
Attachment #819228 -
Flags: review?(jwalden+bmo) → review+
Comment 37•11 years ago
|
||
(In reply to Chris Peterson (:cpeterson) from comment #36)
> I think Ralph's f+ accidentally stomped on jwalden's r+.
Yes.
Comment 38•11 years ago
|
||
(In reply to :Ehsan Akhgari (needinfo? me!) from comment #28)
> 1. Char16.h pulls in yvals.h where it doesn't really need to. See this from
> yvals.h:
> ...
> In order to prevent that header to screw with char16_t, all we need to do is
> to #define _CHAR16T.
Ehsan: is Char16.h always included after yvals.h? Otherwise, Char16.h's #define _CHAR16T will be too late to prevent yval's typedef.
I have a fuzzy memory of some .cpp files including windows.h before some std headers, so Char16.h had to handle both the before and after case (and thus the `#define char16_t` instead of a typedef).
Assignee | ||
Comment 39•11 years ago
|
||
(In reply to Chris Peterson (:cpeterson) from comment #38)
> (In reply to :Ehsan Akhgari (needinfo? me!) from comment #28)
> > 1. Char16.h pulls in yvals.h where it doesn't really need to. See this from
> > yvals.h:
> > ...
> > In order to prevent that header to screw with char16_t, all we need to do is
> > to #define _CHAR16T.
>
> Ehsan: is Char16.h always included after yvals.h?
No, it will always be #included as the very first header (well, the second header to be precise), see <http://mxr.mozilla.org/mozilla-central/source/mozilla-config.h.in#38>.
> Otherwise, Char16.h's
> #define _CHAR16T will be too late to prevent yval's typedef.
Nope, see comment 28, specifically the |#if !defined(_CHAR16T)| part.
> I have a fuzzy memory of some .cpp files including windows.h before some std
> headers, so Char16.h had to handle both the before and after case (and thus
> the `#define char16_t` instead of a typedef).
See above. :-)
Assignee | ||
Comment 40•11 years ago
|
||
(In reply to Jeff Walden [:Waldo] (remove +bmo to email) from comment #32)
> I have no idea how we're going to address the mingw situation,
Me neither yet.
> or the
> situation if (when?) MS makes char16_t a distinct type from anything else,
> including wchar_t. This seems to make that worse.
Microsoft will have a hard time doing that with the mess that is the Win32 API. If they just make char16_t a normal built-in type, it will not be useful to anybody.
Assignee | ||
Comment 41•11 years ago
|
||
(In reply to Ralph Giles (:rillian) from comment #33)
> ::: mfbt/Char16.h
> @@ +21,5 @@
> > * C++11 says char16_t is a distinct builtin type, but Windows's yvals.h
> > * typedefs char16_t as an unsigned short. We would like to alias char16_t
> > * to Windows's 16-bit wchar_t so we can declare UTF-16 literals as constant
> > + * expressions (and pass char16_t pointers to Windows APIs). We #define
> > + * _CHAR16T here in order to prevent yvals.h to override our char16_t
>
> This should be "...to prevent yvals.h from overriding our char16_t"
https://hg.mozilla.org/integration/mozilla-inbound/rev/97d51d6ae2b7
Comment 42•11 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla27
Comment 43•11 years ago
|
||
Flags: in-testsuite-
Comment 44•11 years ago
|
||
\o/ Thanks ehsan, chris, and all the troubleshooters.
You need to log in
before you can comment on or make changes to this bug.
Description
•