name: C/C++ CI on: [push, pull_request] jobs: build-ubuntu-default: # checking pure lib source distribution with plain configure & make runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: configure run: ./configure - name: make run: make build-ubuntu-default-full-bundle-1: # full bundle: enable all codecs + AEC + DTLS # full bundle 1: running pjlib, pjlib-util, pjmedia, and pjsua tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: sudo apt-get install -y swig sip-tester libopencore-amrnb-dev - name: config site run: cd pjlib/include/pj && cp config_site_test.h config_site.h - name: configure run: CFLAGS="-g -fPIC" CXXFLAGS="-g -fPIC" LDFLAGS="-rdynamic" ./configure - name: make run: make - name: swig bindings run: cd pjsip-apps/src/swig && make - name: set up Python 2.7 for pjsua test uses: actions/setup-python@v2 with: python-version: 2.7 - name: unit tests run: make pjlib-test pjlib-util-test pjmedia-test pjsua-test build-ubuntu-default-full-bundle-2: # full bundle 2: running pjnath test runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: sudo apt-get install -y libopencore-amrnb-dev - name: config site run: cd pjlib/include/pj && cp config_site_test.h config_site.h - name: configure run: CFLAGS="-g" LDFLAGS="-rdynamic" ./configure - name: make run: make - name: unit tests run: make pjnath-test build-ubuntu-default-full-bundle-3: # full bundle 3: running pjsip test runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: sudo apt-get install -y libopencore-amrnb-dev - name: config site run: cd pjlib/include/pj && cp config_site_test.h config_site.h - name: configure run: CFLAGS="-g" LDFLAGS="-rdynamic" ./configure - name: make run: make - name: unit tests run: make pjsip-test build-ubuntu-no-tls: # no TLS runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: sudo apt-get install -y swig - name: configure run: CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure --disable-ssl - name: make run: make - name: swig bindings run: cd pjsip-apps/src/swig && make # build-ubuntu-openssl # TLS: with OpenSSL (same as build-ubuntu-default) build-ubuntu-gnu-tls: # TLS: with GnuTLS runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: sudo apt-get update && sudo apt-get install -y --fix-missing swig libgnutls28-dev - name: configure run: CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure --with-gnutls=/usr/ - name: make run: make - name: swig bindings run: cd pjsip-apps/src/swig && make build-ubuntu-video-openh264-1: # video: video enabled with vpx and openh264 # video 1: running pjlib, pjlib-util, pjmedia, and pjsua tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: sudo apt-get install -y swig nasm sip-tester libvpx-dev libopencore-amrnb-dev - name: get openh264 run: git clone --single-branch --branch openh264v2.1.0 https://github.com/cisco/openh264.git - name: build openh264 run: cd openh264 && make && sudo make install && sudo ldconfig - name: config site run: cd pjlib/include/pj && cp config_site_test.h config_site.h && echo "#define PJMEDIA_HAS_VIDEO 1" >> config_site.h - name: configure run: CFLAGS="-g -fPIC -DHAS_VID_CODEC_TEST=0" CXXFLAGS="-g -fPIC" LDFLAGS="-rdynamic" ./configure - name: make run: make - name: swig bindings run: cd pjsip-apps/src/swig && make - name: set up Python 2.7 for pjsua test uses: actions/setup-python@v2 with: python-version: 2.7 - name: unit tests run: make pjlib-test pjlib-util-test pjmedia-test pjsua-test build-ubuntu-video-openh264-2: # video 2: running pjnath test runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: sudo apt-get install -y nasm libvpx-dev libopencore-amrnb-dev - name: get openh264 run: git clone --single-branch --branch openh264v2.1.0 https://github.com/cisco/openh264.git - name: build openh264 run: cd openh264 && make && sudo make install && sudo ldconfig - name: config site run: cd pjlib/include/pj && cp config_site_test.h config_site.h && echo "#define PJMEDIA_HAS_VIDEO 1" >> config_site.h - name: configure run: CFLAGS="-g" LDFLAGS="-rdynamic" ./configure - name: make run: make - name: unit tests run: make pjnath-test build-ubuntu-video-openh264-3: # video: 3: running pjsip test runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: sudo apt-get install -y nasm libvpx-dev libopencore-amrnb-dev - name: get openh264 run: git clone --single-branch --branch openh264v2.1.0 https://github.com/cisco/openh264.git - name: build openh264 run: cd openh264 && make && sudo make install && sudo ldconfig - name: config site run: cd pjlib/include/pj && cp config_site_test.h config_site.h && echo "#define PJMEDIA_HAS_VIDEO 1" >> config_site.h - name: configure run: CFLAGS="-g" LDFLAGS="-rdynamic" ./configure - name: make run: make - name: unit tests run: make pjsip-test build-ubuntu-video-ffmpeg: # video enabled with vpx and ffmpeg and x264 runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: sudo apt-get install -y swig nasm libx264-dev libvpx-dev - name: get ffmpeg run: git clone --single-branch --branch release/4.2 https://github.com/FFmpeg/FFmpeg.git - name: configure ffmpeg run: cd FFmpeg && ./configure --enable-shared --disable-static --enable-gpl --enable-libx264 - name: build ffmpeg run: cd FFmpeg && make -j10 && sudo make install - name: config site run: echo -e "#define PJMEDIA_HAS_VIDEO 1\n" > pjlib/include/pj/config_site.h - name: configure run: CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure - name: make run: make - name: swig bindings run: cd pjsip-apps/src/swig && make build-mac-default: # checking pure lib source distribution with plain configure & make runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: configure run: ./configure - name: make run: make build-mac-default-full-bundle-1: # full bundle: enable all codecs + AEC + DTLS # full bundle 1: running pjlib, pjlib-util, pjmedia, and pjsua tests runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: brew install opencore-amr swig sipp - name: config site run: cd pjlib/include/pj && cp config_site_test.h config_site.h - name: configure run: CFLAGS="-g -I/usr/local/include -I/usr/local/opt/openssl/include -fPIC" LDFLAGS="-L/usr/local/lib -L/usr/local/opt/openssl/lib" CXXFLAGS="-g -fPIC" ./configure - name: make run: make - name: swig bindings run: cd pjsip-apps/src/swig && make - name: disable firewall run: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off - name: set up Python 2.7 for pjsua test uses: actions/setup-python@v2 with: python-version: 2.7 - name: unit tests run: make pjlib-test pjmedia-test pjlib-util-test pjsua-test build-mac-default-full-bundle-2: # full bundle 2: running pjnath test runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: brew install opencore-amr - name: config site run: cd pjlib/include/pj && cp config_site_test.h config_site.h - name: configure run: CFLAGS="-g -I/usr/local/include -I/usr/local/opt/openssl/include" LDFLAGS="-L/usr/local/lib -L/usr/local/opt/openssl/lib" ./configure - name: make run: make - name: disable firewall run: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off - name: unit tests run: make pjnath-test build-mac-default-full-bundle-3: # full bundle 3: running pjsip test runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: brew install opencore-amr - name: config site run: cd pjlib/include/pj && cp config_site_test.h config_site.h - name: configure run: CFLAGS="-g -I/usr/local/include -I/usr/local/opt/openssl/include" LDFLAGS="-L/usr/local/lib -L/usr/local/opt/openssl/lib" ./configure - name: make run: make - name: disable firewall run: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off - name: unit tests run: make pjsip-test # build-ubuntu-no-tls: # no TLS (same as build-mac-default) build-mac-openssl: # TLS: with OpenSSL runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: brew install swig - name: configure run: CFLAGS="-I/usr/local/include -I/usr/local/opt/openssl/include -fPIC" LDFLAGS="-L/usr/local/lib -L/usr/local/opt/openssl/lib" CXXFLAGS="-fPIC" ./configure - name: make run: make - name: swig bindings run: cd pjsip-apps/src/swig && make build-mac-gnu-tls: # TLS: with GnuTLS runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: brew install swig - name: configure run: CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./configure --with-gnutls=/usr/local/ - name: make run: make - name: swig bindings run: cd pjsip-apps/src/swig && make build-mac-video-openh264-1: # video: video enabled with vpx and openh264 # video 1: running pjlib, pjlib-util, pjmedia, and pjsua tests runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: brew install openh264 libvpx opencore-amr swig sipp - name: config site run: cd pjlib/include/pj && cp config_site_test.h config_site.h && echo "#define PJMEDIA_HAS_VIDEO 1" >> config_site.h - name: configure run: CFLAGS="-g -I/usr/local/include -I/usr/local/opt/openssl/include -DHAS_VID_CODEC_TEST=0 -fPIC" LDFLAGS="-L/usr/local/lib -L/usr/local/opt/openssl/lib" CXXFLAGS="-g -fPIC" ./configure - name: make run: make - name: swig bindings run: cd pjsip-apps/src/swig && make - name: disable firewall run: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off - name: set up Python 2.7 for pjsua test uses: actions/setup-python@v2 with: python-version: 2.7 - name: unit tests run: make pjlib-test pjmedia-test pjlib-util-test pjsua-test build-mac-video-openh264-2: # video 2: running pjnath test runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: brew install openh264 libvpx opencore-amr - name: config site run: cd pjlib/include/pj && cp config_site_test.h config_site.h && echo "#define PJMEDIA_HAS_VIDEO 1" >> config_site.h - name: configure run: CFLAGS="-g -I/usr/local/include -I/usr/local/opt/openssl/include" LDFLAGS="-L/usr/local/lib -L/usr/local/opt/openssl/lib" ./configure - name: make run: make - name: disable firewall run: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off - name: unit tests run: make pjnath-test build-mac-video-openh264-3: # video 3: running pjsip test runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: brew install openh264 libvpx opencore-amr - name: config site run: cd pjlib/include/pj && cp config_site_test.h config_site.h && echo "#define PJMEDIA_HAS_VIDEO 1" >> config_site.h - name: configure run: CFLAGS="-g -I/usr/local/include -I/usr/local/opt/openssl/include" LDFLAGS="-L/usr/local/lib -L/usr/local/opt/openssl/lib" ./configure - name: make run: make - name: disable firewall run: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off - name: unit tests run: make pjsip-test build-mac-video-ffmpeg: # video enabled with vpx and ffmpeg and x264 runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: brew install x264 libvpx nasm swig - name: get ffmpeg run: git clone --single-branch --branch release/4.2 https://github.com/FFmpeg/FFmpeg.git - name: configure ffmpeg run: cd FFmpeg && ./configure --enable-shared --disable-static --enable-gpl --enable-libx264 - name: build ffmpeg run: cd FFmpeg && make -j10 && sudo make install - name: config site run: echo -e "#define PJMEDIA_HAS_VIDEO 1\n" > pjlib/include/pj/config_site.h - name: configure run: CFLAGS="-I/usr/local/include -I/usr/local/opt/openssl/include -fPIC" LDFLAGS="-L/usr/local/lib -L/usr/local/opt/openssl/lib" CXXFLAGS="-fPIC" ./configure - name: make run: make - name: swig bindings run: cd pjsip-apps/src/swig && make build-mac-video-vid-toolbox: # video enabled with vpx and video toolbox runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: install dependencies run: brew install libvpx swig - name: config site run: echo -e "#define PJMEDIA_HAS_VIDEO 1\n#define PJMEDIA_HAS_VID_TOOLBOX_CODEC 1\n" > pjlib/include/pj/config_site.h - name: configure run: CFLAGS="-I/usr/local/include -I/usr/local/opt/openssl/include -fPIC" LDFLAGS="-L/usr/local/lib -L/usr/local/opt/openssl/lib" CXXFLAGS="-fPIC" ./configure - name: make run: make - name: swig bindings run: cd pjsip-apps/src/swig && make build-windows-default: runs-on: windows-latest steps: - uses: actions/checkout@master - name: get swig run: Invoke-WebRequest -Uri "https://nchc.dl.sourceforge.net/project/swig/swigwin/swigwin-4.0.1/swigwin-4.0.1.zip" -OutFile ".\swigwin.zip" shell: powershell - name: expand swig run: | Expand-Archive -LiteralPath .\swigwin.zip -DestinationPath .\swigwin\; pwd cd swigwin\swigwin-4.0.1 Add-Content ..\..\swig_path.txt $pwd.Path shell: powershell - name: config site run: type nul > pjlib/include/pj/config_site.h shell: cmd - name: MSBuild run: | call "%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" msbuild pjproject-vs14.sln /p:PlatformToolset=v142 /p:Configuration=Debug /p:Platform=win32 shell: cmd - name: build swig run: | set /P SWIG_PATH= pjlib\include\pj\config_site.h Add-Content config_site.h "#define PJ_HAS_SSL_SOCK 1" Add-Content config_site.h "#define PJ_SSL_SOCK_IMP PJ_SSL_SOCK_IMP_GNUTLS" shell: powershell - name: check VsDevCmd.bat run: dir "%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" shell: cmd - name: MSBuild working-directory: . run: | set /P LIBGNUTLS_DIR= pjlib\include\pj\config_site.h Add-Content config_site.h "#define PJMEDIA_HAS_VIDEO 1" Add-Content config_site.h "#define PJMEDIA_HAS_FFMPEG 1" Add-Content config_site.h "#define PJMEDIA_HAS_FFMPEG_VID_CODEC 1" Add-Content config_site.h "#define PJMEDIA_VIDEO_DEV_HAS_FFMPEG 1" Add-Content config_site.h "#define PJMEDIA_VIDEO_DEV_HAS_SDL 1" shell: powershell - name: check VsDevCmd.bat run: dir "%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" shell: cmd - name: MSBuild working-directory: . run: | set /P LIBFFMPEG_DIR=