Determine build dependancies


#1

Hi there,
I’m able to build my app locally, but when trying to deploy it I’m not able to get it to build. I’m pretty sure I need to install some dependency, but I’m not able to figure out what it is.

From the errors, it looks like something should to be compiled with C++ but it’s compiling with C instead? Ideas would be appreciated. Here’s some snipped output:

$ cargo build
   Compiling ring v0.11.0
error: failed to run custom build command for `ring v0.11.0`
process didn't exit successfully: `...` (exit code: 101)
--- stdout
...
running "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-m64" "-I" "include" "-std=c1x" "-Wbad-function-cast" "-Wmissing-prototypes" "-Wnested-externs" "-Wstrict-prototypes" "-fdata-sections" "-ffunction-sections" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-declarations" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-Wno-cast-align" "-fstack-protector" "-g3" "-D_XOPEN_SOURCE=700" "-Wall" "-Wextra" "-c" "-o/home/.../target/debug/build/ring-c9a06f0b75797e04/out/exponentiation.o" "crypto/bn/exponentiation.c"

--- stderr
cc1: warning: command line option "-Wenum-compare" is valid for C++/ObjC++ but not for C
cc1: error: unrecognized command line option "-std=c1x"
thread '<unnamed>' panicked at 'execution failed', /home/dempzorz/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.11.0/build.rs:658:8
note: Run with `RUST_BACKTRACE=1` for a backtrace.
cc1: warning: command line option "-Wenum-compare" is valid for C++/ObjC++ but not for C
cc1: error: unrecognized command line option "-std=c1x"
thread '<unnamed>' panicked at 'execution failed', /home/dempzorz/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.11.0/build.rs:658:8
cc1: warning: command line option "-Wenum-compare" is valid for C++/ObjC++ but not for C
cc1: error: unrecognized command line option "-std=c1x"
thread '<unnamed>' panicked at 'execution failed', /home/dempzorz/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.11.0/build.rs:658:8
/home/dempzorz/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.11.0/pregenerated/sha512-x86_64-elf.S: Assembler messages:
/home/dempzorz/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.11.0/pregenerated/sha512-x86_64-elf.S:2995: Error: no such instruction: `vinserti128 $1,(%r12),%ymm0,%ymm0'
...
cc1: warning: command line option "-Wenum-compare" is valid for C++/ObjC++ but not for C
cc1: error: unrecognized command line option "-std=c1x"
thread '<unnamed>' panicked at 'execution failed', /home/dempzorz/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.11.0/build.rs:658:8
thread '<unnamed>' panicked at 'execution failed', /home/dempzorz/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.11.0/build.rs:658:8
cc1: warning: command line option "-Wenum-compare" is valid for C++/ObjC++ but not for C
cc1: error: unrecognized command line option "-std=c1x"

Cheers


#2

There does seem to be some build system confusion between C and C++, but from the source file extension and the CLI option on which the compiler errors out, I think the right answer is actually C, not C++, and it seems to be selected correctly. Maybe @briansmith, author of ring, will have more insight?

If I try to have a guess myself, note that the specific part on which the C compiler errors out…

cc1: error: unrecognized command line option “-std=c1x”

…sounds like something that could be fixed by either a C compiler update (if your C compiler is too old to support C11, even in a preliminary form) or a build rule update in ring (if your C compiler does support C11, but has dropped the preliminary “c1x” standard switch that was popular when that standard was still in development).