aws-samples / amazon-kinesis-video-streams-media-interface

Amazon Kinesis Video Streams Media Interface provides abstract interfaces for board specific media APIs. This repository also contains boards sensors/encoder implementations for Amazon Kinesis Video Streams Producer and WebRTC with out-of-box samples.
Apache License 2.0
32 stars 24 forks source link

Unable to build sample for T31 with GCC version 5.4.0 #113

Closed arshanawais closed 11 months ago

arshanawais commented 11 months ago

While trying to build sample for T31, I encounter below error(s) due to unsupported C flags. I am trying to build the sample with cross compiler GCC version 5.4.0 and I cannot use some later version because the T31 SDK/libraries I have are already built with 5.4.0 version. I also could not find a way to remove the troublesome flag from cmake files. Below is the output of build failure:

ubuntu@ubuntu:~/cam-dev/amazon-kinesis-video-streams-media-interface/build$ make
[  4%] Building C object CMakeFiles/embedded-media-static.dir/source/T31/T31VideoCapturer.c.o
[  8%] Building C object CMakeFiles/embedded-media-static.dir/source/T31/T31AudioCapturer.c.o
[ 12%] Building C object CMakeFiles/embedded-media-static.dir/source/T31/T31AudioPlayer.c.o
[ 16%] Building C object CMakeFiles/embedded-media-static.dir/3rdparty/T31/samples/libimp-samples/sample-common.c.o
[ 20%] Linking C static library libembedded-media.a
[ 20%] Built target embedded-media-static
[ 24%] Building C object CMakeFiles/embedded-media-shared.dir/source/T31/T31VideoCapturer.c.o
[ 28%] Building C object CMakeFiles/embedded-media-shared.dir/source/T31/T31AudioCapturer.c.o
[ 32%] Building C object CMakeFiles/embedded-media-shared.dir/source/T31/T31AudioPlayer.c.o
[ 36%] Building C object CMakeFiles/embedded-media-shared.dir/3rdparty/T31/samples/libimp-samples/sample-common.c.o
[ 40%] Linking C shared library libembedded-media.so
[ 40%] Built target embedded-media-shared
[ 44%] Creating directories for 'kvs-webrtc'
[ 48%] Performing download step (git clone) for 'kvs-webrtc'
Cloning into 'kvs-webrtc'...
remote: Enumerating objects: 226875, done.
remote: Counting objects: 100% (44212/44212), done.
remote: Compressing objects: 100% (5858/5858), done.
remote: Total 226875 (delta 40136), reused 41332 (delta 37609), pack-reused 182663
Receiving objects: 100% (226875/226875), 474.24 MiB | 9.15 MiB/s, done.
Resolving deltas: 100% (205984/205984), done.
Already on 'master'
Your branch is up to date with 'origin/master'.
[ 52%] Performing update step for 'kvs-webrtc'
HEAD is now at 0ae9ec6b8 testing release with media storage support (#1783)
[ 56%] Performing patch step for 'kvs-webrtc'
HEAD is now at 0ae9ec6b8 testing release with media storage support (#1783)
[ 60%] Performing configure step for 'kvs-webrtc'
-- The C compiler identification is GNU 5.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/ubuntu/cam-dev/toolchain/mips-gcc540-glibc222-64bit-r3.3.0/bin/mips-linux-gnu-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Looking for include file ifaddrs.h
-- Looking for include file ifaddrs.h - found
-- Looking for getifaddrs
-- Looking for getifaddrs - found
-- Kinesis Video WebRTC Client path is /home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/samples/webrtc/kvs-webrtc-prefix/src/kvs-webrtc
-- dependencies install path is /home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/aws-dependencies/webrtc
-- Detected gcc
-- Begin building dependencies.
-- Copying patches for dependency mbedtls:
-- C flags here are -Wno-error=stringop-overflow -I/home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/samples/webrtc/kvs-webrtc-prefix/src/kvs-webrtc/configs -DMBEDTLS_USER_CONFIG_FILE="<config_mbedtls.h>" -fPIC -std=gnu99 -std=c99
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/aws-dependencies/webrtc/libmbedtls
gmake[3]: Entering directory '/home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/aws-dependencies/webrtc/libmbedtls'
gmake[4]: Entering directory '/home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/aws-dependencies/webrtc/libmbedtls'
gmake[5]: Entering directory '/home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/aws-dependencies/webrtc/libmbedtls'
gmake[5]: Leaving directory '/home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/aws-dependencies/webrtc/libmbedtls'
gmake[5]: Entering directory '/home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/aws-dependencies/webrtc/libmbedtls'
[ 11%] Creating directories for 'project_libmbedtls'
[ 22%] Performing download step (git clone) for 'project_libmbedtls'
Cloning into 'project_libmbedtls'...
HEAD is now at 1c54b5410 Merge pull request #786 from ARMmbed/dev/yanesca/mbedtls-2.25.0r0-pr
[ 33%] Performing update step for 'project_libmbedtls'
[ 44%] No patch step for 'project_libmbedtls'
[ 55%] Performing configure step for 'project_libmbedtls'
-- The C compiler identification is GNU 5.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Check for working C compiler: /home/ubuntu/cam-dev/toolchain/mips-gcc540-glibc222-64bit-r3.3.0/bin/mips-linux-gnu-gcc
-- Check for working C compiler: /home/ubuntu/cam-dev/toolchain/mips-gcc540-glibc222-64bit-r3.3.0/bin/mips-linux-gnu-gcc - broken
CMake Error at /usr/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake:69 (message):
  The C compiler

    "/home/ubuntu/cam-dev/toolchain/mips-gcc540-glibc222-64bit-r3.3.0/bin/mips-linux-gnu-gcc"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: /home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/aws-dependencies/webrtc/libmbedtls/build/src/project_libmbedtls-build/CMakeFiles/CMakeTmp

    Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_3eb77/fast && gmake[6]: Entering directory '/home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/aws-dependencies/webrtc/libmbedtls/build/src/project_libmbedtls-build/CMakeFiles/CMakeTmp'
    /usr/bin/gmake  -f CMakeFiles/cmTC_3eb77.dir/build.make CMakeFiles/cmTC_3eb77.dir/build
    gmake[7]: Entering directory '/home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/aws-dependencies/webrtc/libmbedtls/build/src/project_libmbedtls-build/CMakeFiles/CMakeTmp'
    Building C object CMakeFiles/cmTC_3eb77.dir/testCCompiler.c.o
    /home/ubuntu/cam-dev/toolchain/mips-gcc540-glibc222-64bit-r3.3.0/bin/mips-linux-gnu-gcc   -Wno-error=stringop-overflow -I/home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/samples/webrtc/kvs-webrtc-prefix/src/kvs-webrtc/configs -DMBEDTLS_USER_CONFIG_FILE="<config_mbedtls.h>" -fPIC -std=gnu99 -std=c99  -o CMakeFiles/cmTC_3eb77.dir/testCCompiler.c.o -c /home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/aws-dependencies/webrtc/libmbedtls/build/src/project_libmbedtls-build/CMakeFiles/CMakeTmp/testCCompiler.c
    cc1: error: -Werror=stringop-overflow: no option -Wstringop-overflow
    gmake[7]: *** [CMakeFiles/cmTC_3eb77.dir/build.make:78: CMakeFiles/cmTC_3eb77.dir/testCCompiler.c.o] Error 1
    gmake[7]: Leaving directory '/home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/aws-dependencies/webrtc/libmbedtls/build/src/project_libmbedtls-build/CMakeFiles/CMakeTmp'
    gmake[6]: *** [Makefile:127: cmTC_3eb77/fast] Error 2
    gmake[6]: Leaving directory '/home/ubuntu/cam-dev/amazon-kinesis-video-streams-media-interface/build/aws-dependencies/webrtc/libmbedtls/build/src/project_libmbedtls-build/CMakeFiles/CMakeTmp'

  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:27 (project)

-- Configuring incomplete, errors occurred!

Target platform Ingenic T31

Commit id The commit id you are using. 47c3e59d9d14df0be7e8532279646c7a63c5b6de

Build commands

export CC=mips-linux-gnu-gcc
export CXX=mips-linux-gnu-g++
cd amazon-kinesis-video-streams-media-interface
mkdir build; cd build; cmake .. -DBOARD=T31
make
codingspirit commented 11 months ago

Looks like we introduced stringop-overflow in recent changes. I will roll back this change for now

codingspirit commented 11 months ago

Hi @arshanawais , I roll back webrtc sdk version to v1.8.1. Please use b998960 and try again

arshanawais commented 11 months ago

I am now able to build the sample. Thanks a lot for the changes you made.