language: c
compiler:
- gcc
env:
  global:
  - secure: nSunY54Wp5HkQCHHbKwlwpbaKyqRVIu/0EnhaoJSwhM1wqerQV/E5d/2JelO9/tZgbungAO7wk/fjutRMVc7d378RTIPwS8vHpvZfEoGhCFsLoTOlqESzsZFBup2H5t1lpQ23jRHDOxlLdJy2lz5U+zd1YnYgDXqdDFjegsIYdo=
  - secure: ehswgymGXPM3UINhOOnfSByMnrRNTixeT2vEV+z3kXy3WHew/O1yt9GxaYGrUhJPg4+5chAQgjYmezO1x3/CUKFgeHQUmVTFWEzfy1kL1JVjO+ufYyJDnbY+x3OmyNmMYcef2J5MAuUS2C1KFvIxtLsljVK+gpe4LcylkCIF/3Y=
addons:
  coverity_scan:
    project:
      name: acplt/open62541
      description: Open-source OPC UA
    notification_email: null@plt.rwth-aachen.de
    build_command_prepend: mkdir build && cd build && cmake ..
    build_command: make
    branch_pattern: coverity_scan
before_install:
- sudo apt-get install binutils-mingw-w64-i686 gcc-mingw-w64-i686
- sudo add-apt-repository ppa:kalakris/cmake -y
- sudo apt-get update -qq
- sudo apt-get install -qq --no-install-recommends build-essential cmake python-lxml gcc-multilib graphviz doxygen wget zip
- wget http://security.ubuntu.com/ubuntu/pool/main/c/check/check_0.9.10-6ubuntu3_amd64.deb
- sudo dpkg -i check_0.9.10-6ubuntu3_amd64.deb
- wget https://launchpad.net/ubuntu/+source/liburcu/0.8.5-1ubuntu1/+build/6513813/+files/liburcu2_0.8.5-1ubuntu1_amd64.deb
- wget https://launchpad.net/ubuntu/+source/liburcu/0.8.5-1ubuntu1/+build/6513813/+files/liburcu-dev_0.8.5-1ubuntu1_amd64.deb
- sudo dpkg -i liburcu2_0.8.5-1ubuntu1_amd64.deb
- sudo dpkg -i liburcu-dev_0.8.5-1ubuntu1_amd64.deb
- sudo pip install cpp-coveralls
script:
- echo "Checking the applicability of patches"
- # ./tools/.checkPorts.sh
- echo "Testing builds"
- mkdir -p build
- cd build
- echo "Cross compile release build for MinGW"
- cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw32.cmake -DENABLE_AMALGAMATION=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLESERVER=ON -DBUILD_EXAMPLECLIENT=ON ..
- make -j
- cp ../README.md .
- zip open62541-win32.zip README.md exampleServer.exe exampleClient.exe libopen62541.dll libopen62541.dll.a open62541.h open62541.c
- cp open62541-win32.zip ..
- cd .. && rm build -rf && mkdir -p build && cd build
- echo "Cross compile release build for 32-bit linux"
- cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-gcc-m32.cmake -DENABLE_AMALGAMATION=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLESERVER=ON -DBUILD_EXAMPLECLIENT=ON ..
- make -j
- tar -pczf open62541-linux32.tar.gz ../README.md exampleServer exampleClient libopen62541.so open62541.h open62541.c
- cp open62541-linux32.tar.gz ..
- cd .. && rm build -rf && mkdir -p build && cd build
- echo "Compile release build for 64-bit linux"
- cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_AMALGAMATION=ON -DBUILD_EXAMPLESERVER=ON -DBUILD_EXAMPLECLIENT=ON ..
- make -j
- tar -pczf open62541-linux64.tar.gz ../README.md exampleServer exampleClient libopen62541.so open62541.h open62541.c
- cp open62541-linux64.tar.gz ..
- cp open62541.h .. #copy single file-release
- cp open62541.c .. #copy single file-release
- cd .. && rm build -rf && mkdir -p build && cd build
- echo "Upgrade to gcc 4.8"
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
- sudo apt-get update -qq
- sudo apt-get install -qq gcc-4.8
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
- sudo update-alternatives --config gcc
- echo "Compile multithreaded version"
- cmake -DENABLE_MULTITHREADING=ON -DBUILD_EXAMPLESERVER=ON ..
- make -j
- cd .. && rm build -rf && mkdir -p build && cd build
- echo "Debug build and unit tests (64 bit)"
- cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_DEMO_NODESET=ON -DBUILD_UNIT_TESTS=ON -DENABLE_COVERAGE=ON ..
- make -j && make test
- coveralls --gcov /usr/bin/gcov-4.8 -E '.*\.h' -E '.*CMakeCXXCompilerId\.cpp' -E '.*CMakeCCompilerId\.c' -r ../
- cd .. && rm build -rf && mkdir -p build && cd build
- echo "Documentation build"
- cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DOCUMENTATION=ON ..
- make -j
- echo "Generate documentation"
- make -j doc
- cd ..
after_success:
- ./tools/.deployDoxygen.sh
- ./tools/.coverity.sh
before_deploy:
- rm build -rf && mkdir -p build && cd build
- echo "Cross compile release build for Raspberry Pi"
- cd ~
- git clone https://github.com/raspberrypi/tools
- cd -
- export PATH=$PATH:~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/
- cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-rpi64.cmake -DENABLE_AMALGAMATION=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLESERVER=ON -DBUILD_EXAMPLECLIENT=ON ..
- make -j
- tar -pczf open62541-raspberrypi.tar.gz ../README.md exampleServer exampleClient libopen62541.so open62541.h open62541.c
- cp open62541-raspberrypi.tar.gz ..
- cd ..
deploy:
  provider: releases
  api_key:
    secure: PKCoA7MBRtHloIbNF4Qj5LQyCafjekfVeFXlMBd9KmC0ynNuef+D7nn38f/jo25/b0Ii7r+hgslkQPezbKyEqo2zcCB8Pn8TWau2hbzKM/dUCPoN90HVaQcRjUi8P2Y+QkouwyPWSujBL35/X5QiAntRotCSbZx4fkyiN8cU95o=
  file: 
    - open62541-win32.zip
    - open62541-linux32.tar.gz
    - open62541-linux64.tar.gz
    - open62541-raspberrypi.tar.gz
    - open62541.c
    - open62541.h
  skip_cleanup: true
  on:
    tags: true